Writing code is both how you build your skill and how you apply your knowledge. Wrestling with technical problems and business problems, and creating effective solutions in code, is what software engineering is all about.
Writing code is the primary way to get better at writing code. Writing code is also the primary way to understand how well you can write code. Writing code requires repetition. And more repetition. And patience. Writing code requires making stupid mistakes, and facing unexpected setbacks.
You should spend at least as much time writing code (on your own - not following a tutorial) as you spend in other modes of learning. You cannot write code well, or write code quickly, until you’ve written a certain amount of bad code, or written code very slowly.
Writing code is the ultimate application and measurement of software engineering skill. There is no substitute. Everything else is preparation. Writing code is the actual practice. Use other learning modes to build your knowledge of software engineering. Then write code to build your skill. When you find yourself struggling to write the code that you need, revisit the other learning modes to fill in the gaps in your knowledge.
Preparation is necessary, and so is practice. Trying to write significant code without also using the other three modes of learning will be an exercise in frustration. But, using other modes of learning, while not also writing code frequently, will also be an exercise in futility.
Expect to bang your head against the wall many times during your practice of coding. There’s a big gap to be crossed between reading about a thing and actually doing the thing. Practice helps you grow. Solving real problems helps you grow.
Start with small, simple problems, and work your way up to bigger, more complex problems. Plan the code, write it, debug it, test it, review it. Figure out why it doesn’t work. Figure out how to make it better. Figure out how to build bigger, more complex things, and how to make them easier to build and maintain.
Alternate between writing code, and building knowledge with other modes of learning. Then write more code. It’s a continuous, virtuous cycle, when done well.
Read more about the other modes of learning for software engineers:
- [[Four modes of learning in software engineering]]
- [[Learning Mode 1 - Broaden Your Knowledge with Introductory Content]]
- [[Learning Mode 2 - Deepen Your Knowledge By Reading Books and Documentation]]
- [[Learning Mode 3 - Deepen Your Knowledge By Reading Code]]
- [[Break Out of Tutorial Hell and Overcome Impostor Syndrome]]