My first manager right out of dev bootcamp had some advice for me: “The first step in learning to be a good coder, is to write really shitty code.” At first it was jarring to hear this, but in hindsight I think he was correct.
This is because you actually have to write code in order to learn how to code. This might seem obvious to anyone, but it was not to me when I first began. I liked to study, and read the books--scripture and commentary. I pored over thousands of lines of code, written by other developers. I talked about code all the time and went to meetups and attended lectures. I thought all of this would help me write good code.
After six months on the job as a new developer, I was still struggling. I wanted to write good code right out of the gate, but that was impossible, and I think I was suffering from a programmer’s equivalent of writer’s block.
This is when my manager told me to write shitty code. It was his way of saying I was avoiding what I actually needed to do: write lots of code. Code that is embarrassingly naive and brittle. And that developers curse and hate working with. And that I would need to spend hours being stuck and hitting my head against the wall and pulling out my hair. I needed to realize that writing bad code is an essential stepping stone on the way to writing good code.
My advice to all junior programmers is to build shit. Write code, all the the time, and make it work, no matter how bad is. Make an app about something you care about. My main hobby is yoga, so I made a yoga app. If you like cats, make a cat website. And don’t just make it, go through the whole process of designing and deploying and hosting so you experience all the pain points along each step of the way. Deployed code, in production, that people are using, is awesome.
You will write bad code, which is great, because that is an important step in the process. And soon enough, you’ll write great code.