Being a Good Developer
The following sections list some topics from popular GitHub repositories and StackOverflow that deal with being a good developer. The selection is tailored to MPS developers.
Every Programmer Should Know/Professional Programming¶ ⧉
- 40 Key Computer Science Concepts Explained In Layman’s Terms ⧉
- Big-O Cheat Sheet ⧉
- average and worst-case time/space complexity of common data structures/algorithms
- Learn regex the easy way + regex101 ⧉ for testing regular expressions
- Command Line for Beginners ⧉
- Learn how to use Git and GitHub ⧉
- Programming Principles ⧉
- hacker-laws ⧉: Laws, Theories, Principles, and Patterns that developers will find useful.
- Lessons Learned in Software Development ⧉
- Things I Learnt The Hard Way ⧉
- 50 ideas that changed my life ⧉
- 20 Things I’ve Learned in My 20 Years as a Software Engineer ⧉
Falsehoods Programmers Believe in¶ ⧉
Falsehood is an idea you initially believed was true, but in reality, it is proven false.
You might have to deal with one of the following topics when you develop a new feature or language:
- dates and time ⧉ (applicable to date- and time-related languages)
- internationalization ⧉ (applicable to languages that should support English and a second language)
- system of measurement ⧉ (applicable to units-related languages)
- software engineering ⧉ (versioning, paths, usernames, identifiers)
- uppercase and lowercase text ⧉
- URLs ⧉
Questions¶
Self-Improvement¶ ⧉
- What is the single most effective thing you did to improve your programming skills? ⧉
- How Can I Know Whether I Am a Good Programmer? ⧉
- What are non-programming mistakes that a programmer should avoid? ⧉
- How important is self-teaching in the programming field? ⧉
- Which algorithms/data structures should I "recognize" and know by name? ⧉
- When would someone be considered a bad programmer? ⧉
- What is the most effective work rhythm for a programmer? ⧉
- What are your initial three steps when you are first presented with a software problem? ⧉
- Programmer / Developer Personal Organization ⧉
- How can I improve my problem-solving ability? ⧉
- How to write efficient code despite heavy deadlines ⧉
- Writing robust code vs. overengineering ⧉
Interpersonal Skills¶ ⧉
- How should I explain technical things to non-technical people? ⧉
- How do I become better on the phone? ⧉
- Anxious during conference calls ⧉
- When is it okay to ask "stupid" questions in the workplace? ⧉
- Knowing when you should send a message instead of asking in person ⧉
- How to make sure I understand a work assignment correctly? ⧉
- How to respond when you are asked for an estimate? ⧉
- How can I avoid coming across as condescending when telling a coworker I can't work on an issue right now? ⧉
- How can I tactfully suggest improvements to others' badly designed code during a review? ⧉
- Dealing with a person who continuously needs help ⧉
- What is the best way to tell colleagues that chat is not a channel for a direct response? ⧉
- How to stop someone from helping you? ⧉