How to get good at Coding

Date: 2024-01-07 | create | tech | code | software-engineering | creation-cycle |

I get asked this question a lot in various forms: "How do I get good at coding?"

My answer is simple: Code.

Now this may seem overly contrived but it's not and while it's simple, it's not particularly easy to carry out. In this post I'm going to explain why this is the only true answer and provide some recommendations to make starting easier.

You must do TheThing

When people ask this question it's typically in search of an easy solution / hack that will get them their results faster. This is what a lot of online content / courses / experts sell so it's what a lot of people have come to expect.

The thing is that solution / hack is never really true. By and large all of Productivity is about how to optimize your focus / time / energy to better do TheThing.

Seriously - go take 10 course, summarize them, and tell me what they're all attempting to do / how. It's probably this.

But at the end of the day you still need to do TheThing in order to do and improve at TheThing.

An example of this is you could go to infinite classes, read infinite books, watch infinite tutorials on TheThing. But if you never actually do TheThing then you likely aren't good at TheThing.

  • Painter who just goes to classes but never paints -> art enthusiast, art historian but not a painter
  • Potter who learns a lot but never makes pots -> material expert, potting enthusiast but not a potter
  • Photographer who looks at a lot of photos but never takes photos -> photo critic, photo enthusiast but not a photographer

Infinite Learning vs Doing TheThing

So what would you have to do to be someone who does / improves at TheThing? The answer is simple: Do Thething.

  • Painter - someone who paints
  • Potter - someone who pots
  • Photographer - someone who takes photos

So by extension if you want to code and get good at coding you must code.

Now just doing TheThing will get you started but if you blindly do TheThing then it's true you may not make as much progress as you could (though most studies show just doing TheThing is way more impactful than any other approach). So a better approach is to do TheThing with mindfulness and intent.

At its core, all this means is doing TheThing and trying to get a little better each time:

  • Do TheThing
  • Try to learn 1 thing / get 1% better each time

Do this 100 times.

  • Painter - Paint 100 paintings
  • Potter - Make 100 pots
  • Photographer - Take 100 photos (or maybe go on 100 photo shoots)

This probably won't make you an expert in TheThing (the experts have probably done TheThing 10k times) but it will make you infinitely better at TheThing than you were when you started.

Once you're done with your first 100 iterations you can think about whether this is the direction you want to go in and course correct from there.

  • Painter - Do you want your paintings to be more realistic? More abstract? More fantastical? Focus your next 100 iterations on this.
  • Potter - Do you want to make bowls or plates or jugs? Focus your next 100 iterations on that.
  • Photographer - Do you want to try street photography or portraits or landscapes? Focus your next 100 iterations on that.

Do TheThing. Think about what you want to do with TheThing. Rinse and repeat.

So what if you get stuck?

There are times when you may overextend. Perhaps this cycle you tried to do a new version of TheThing but underestimated the complexity / what was involved or maybe you are just completely overwhelmed and not sure where to start.

That's okay! You learned something! That too is progress!

In particular, we've learned a particular thing is blocking us from making progress. Now we can go do some Learning specifically scoped to resolving that one thing. Once we've learned some ways to overcome that thing we can quickly get back to actually doing TheThing.

This scoping of Learning is particularly important so we don't get into the infinite Learning loop we mentioned earlier. At the end of the day we actually need to do TheThing to get good at TheThing so we need to focus on doing TheThing, not procrastinating by doing other things.

Get good at Coding

Hopefully by now it's clear that to get good at TheThing we must do TheThing. Learning to do a thing well is never done by diving into learning resources - that's almost always a distraction and a very attractive procrastination tactic. So we must do TheThing.

So to get at code we must code.

So our goal is to do TheThing: code. You should aim to do this 100 times. You won't be an expert but you will be far better than when you started.

I would recommend trying to write 100 programs. These could be:

Here's a list of random code projects I've built over the years.

Code - just like other practices - requires practice but it doesn't matter so much what you're coding in the early stages. It just matters that you are coding.

Once you've started you can start being more mindful and intentional about how you are progressing:

  • Why do you want to learn coding? A job? A skill? A hobby?
  • What do you hope to do with coding? Make video games? Join a company? Build your own company?

Then from there you can start directing your next cycles towards projects related to that.

  • Looking for a job - Build fullstack websites and do LeetCode (My SWE Interview Guide)
  • Want to build video games - Dive into making little games like tic tac toe, snake, etc
  • Just a hobby - Make fun things that interest you

Just remember - try to learn 1 thing and make it 1% better every time.

Do this 100 times and you'll be much better than before. Then do it again.

This is literally what I do for every project / skill / domain - I call it The Creation Cycle.

Next

Improving at something is simple but that doesn't make it easy. Hopefully this saves you a lot of time spinning your wheels in endless learning loops and gets you actually doing TheThing.

If you liked this you might also like:

Want more like this?

The best / easiest way to support my work is by subscribing for future updates and sharing with your network.