Learning to code takes a special form of grit

I don’t mean just learning to code. I mean learning to code well.

--

Of all the tough times I’ve encountered throughout my journey, I’ve noticed that it’s not actually the “programming” that gets to me. It’s the process & style by which good programmers are developed.

Coding itself is not hard. Learning a new technology is also not hard. The hard part is approaching everything with the mindset that you’re going to fail. Over and over again.

It can be quite a big ego blow when your build keeps failing, or having to watch your tests fail over and over again and you have no idea why. You might be getting frustrated trying to find a solution online to an impossible error. You’ve done everything perfectly, this shouldn’t be happening!

Here comes the hard part. Sticking through it and finding a solution will teach you the nuances of your application and code. Some people might prefer a walk to clear their minds, others might benefit from listening to some music, and you might like to ask your peers for help. No matter the method(ha, pun), do whatever it takes to plow through. Enter the concept of Grit.

Grit: firmness of mind or spirit : unyielding courage in the face of hardship or danger

By practicing perseverance through small isolated acts of focus, your entire mindset will shift. You won’t be able to rest until you are satisfied with your work and come to a resolution.

As your projects grow, dependencies will be added and more code will be written to support your growing feature list. This growth can be a double-edged sword. With the robustness that it brings, you also have to be wary of the weakest link problem. Even if one dependency breaks, you will be in for a treat trying to find the root of the problem. However, often times the issues you’ll be resolving might not even have to do with your own code. Instead, they’ll be easy enough to fix if you’re patient and read through the errors.

Of course, if your design is garbage and susceptible to breaking, then you’re just creating your own problems, and what I said above doesn’t apply. Design your system so that it can withstand change, so that the problems you’ll run into are not of your own creation. But I’ll leave that for another article.

By developing grit and learning to solve problems one step at a time, you will also learn error patterns that happen to repeat themselves, and you can prevent them in the future.

This is #5 in a series of articles intended to document my self-taught journey into the world of computer science. I’ll be sharing my experiences and tips that I’ve learned over the past couple of years. Check out #6, spend more time designing, or have a look at all of my posts!

--

--