Toolbox of a beginner programmer
Throughout my career, I’ve been mentoring beginner programmers, including career changers, and developers with some field experience too. Hereby I’m compiling a list of tools that, based on my praxis, help people become better programmers. These are tools and not rules. Give them a try, experiment with them, and see what works for you.
- Keep a study journal. Be it a text document on your computer, or an online blog. As a beginner programmer, the learning curve might be quite steep. There is so much to know. You might feel that it’s impossible to get your feet on the ground. Therefore take notes of the lessons you learned and celebrate your wins. Look back and see how much progress you made. If you have a dedicated mentor, the journal will be a helpful conversation starter too.
- Deliberate practice. Set time aside to put theory into practice. Deliberate practice is what makes a difference. Read more about this topic in the books Talent is Overrated by Geoff Colvin and Outliers by Malcolm Gladwell.
- Paper first. Before jumping into writing a solution, take your time to understand the task. Break down the problem into small parts. Write down the steps on a sheet of paper. Some people argue that writing code should be just a mechanical routine once you cleared the problem space.
- Make it work first. Solve the problem in the way you can. In any way that you can. Once you have a working solution, refactor it step by step to improve your design. Use tests to guard the refactoring. Even better, practice test-driven development.
-
Debug properly. Avoid
print
statements. If possible, never really got into the habit of debugging with prints in the first place. Invest time into learning your chosen programming language’s debugger. It’s way more powerful and it’s a skill you can improve. You cannot get better at putting prints all around the code base. - Learn from others. Study the best practices of the industry. Explore the coding styles of the languages, frameworks, and libraries you use. Learn refactoring techniques. Watch more experienced engineers writing code and solving problems. Pair programming is a wonderful tool for this. There’s also a heap of videos shared online of people coding. A beautiful example of this is Jordane Grenat’s “Code in the unknown” series.
- Don’t copy-paste code. Usually, it’s better to type it. Basic coding skills must come from the “muscle memory” of your fingers. The Learn Python The Hard Way and similar exercise sets are well-known promoters of this school. If you decide to paste some code, make sure you understand completely what it’s doing.
- Be lazy. Invest time in mastering the coding environment (OS, coding editor, terminal, shell, etc.) you wish to use. Pick one and stick to it for a while. Learn the keystrokes. Customize it to your needs. If you find yourself repeating certain tasks while coding, try to see if you can automate them. Automation is a wonderful way to gain more programming skills.
- Take breaks. The pomodoro technique is a helpful tool to set explicit reminders to ask yourself the following questions: Am I still working on the original problem? Am I getting closer to the solution? Do I need to ask for help? Pomodoro can also help you get better at estimates. When breaking down the problem into tasks, estimate them roughly in pomodoros. After completing your solution, reflect on the actual time needed and your original estimation. What can you learn from the difference? And last, but not least, one of my favorite pieces of advises I once read in the book Test Driven Development: By Example by Beck Kent. He suggested that if you got stuck with a problem, don’t try it harder. Rather go take a shower.
- Rubber duck debugging. If you get stuck with a problem, pretend that you’re explaining your situation to a friend. Write it down or say it out loud. What would you tell them? In most cases, asking the right question will lead to an answer.
- Learning at work. Many other tools help people become a better programmer. If you’re curious to read more, check out Julia Evan’s post on learning at work or read the reflections of the career changers who graduated at Babbel Neos and the retrospective of the software developers who completed the Prezi Jump program.