Young programmer typing in a laptop

Becoming a better programmer

what if You can become a better programmer. I believe you are able to learn to code faster and more efficiently, just by having the right approach and instructions.

I started programming years ago. Out of need. I started working in a web design team using PHP. My (amazing) boss considered writing code in your Windows Notepad not only acceptable, but the proper way. I had to learn, fast.

Later, after switching roles, I wanted to do things for my org that were not possible with the existing tools . Like data analysis of BIG files. Or manipulating existing data to get insights that were not available anywhere else. I wanted to build or deliver results, so I had to learn how to ship those.

These are some tips around learning how to code. Things I have found useful to improve my programming skills. I have always been thinking long and hard about how to become better at learning. I enjoy learning. Even with the constraints of having to do it in a fast paced environment, with little margin of error.

A quick caveat, most of the references and links are for learning JS. I am going deeper into solidity now. The examples that come to the top of my mind are for JS as in the last years I have spent more time with that stack.

The joy of learning also comes from being successful at it. Understand that you need to some extent to perceive your progress and improvement.
Our ego is at the centre of all we do, learning something that goes nowhere is usually not fun at all. We need to feel the car is moving towards the right direction. This is not about reaching a particularly far destination, but about progression. Tracking your progress and measure it.

Ask what are the best books about what you are trying to learn and devote time to read them. In my case, “javascript the good parts” and “JavaScript: The Definitive Guide”.

Being grateful about having to do pull reviews. This is probably my number one, having a great person working with you and reviewing your code is amazing. Try to be that person for someone else. Learn how to do a useful pull review.

Get the best possible teachers. If we are talking about courses, go for the best possible ones. Sometimes more expensive does not mean necessarily better. Ask around. Disclose what are your learning goals (it does make a difference). Filter recommendations. You have access to the best universities of the world, and top-of-the-line educational material from MIT, Oxford, Harvard, Caltech, University of Helsinki… no excuses. Learn to code for free, or almost free, is possible.

Some people out there are creating epic content for a fraction of what costs a traditional education.

Study how other people code. Looking for people setting the standards for your industry, first-rate individual contributors. Check their GitHub projects, learn about how they structure stuff, and what approaches they have to their code. What do they use? what do they avoid?

Learn to handle your own frustration. As with anything important, it takes effort. The important thing is the long game. You are not gonna become great from the very start, but you can target to improve your skills and polish your craft. Not giving up on becoming better, being okay with sucking at first.

Ask questions, no matter how dumb they sound. Getting feedback and filling the gaps in your knowledge is the way to go.

Take notes of your journey. Every day, write down your coding experience. What you find, what is useful, what is not. It can be a simple folder with notes. Eventually, you’ll find the same blockers down the road. By taking notes about it, you’ll keep a backlog of solutions, it will help you debrief situations.

Use your notes actively. Do you know what is even better than writing down everything you learn? remembering it. I use Anki to create flashcards and help my brain retain and recover what I learn. It does make a difference.

Learn from your code. Allocate time to go back to your code and do a post-mortem exercise. Be disciplined about your approach. Sometimes we do not have all the time we would want to plan. Once things are calmer, find time to go back and think about how would you have done it better.

Test yourself, push your limits. What are they asking for the kind of positions you are targeting? What do you need to learn to build whatever you need to exist? how can you do X with your code?

Learn by doing. Practice, practice, practice. Smart, dosed, spaced repetition… Lots of research around the best ways to learn something (an obsession of mine), go look for it and apply it to your field.

Effective learning is something I care about deeply. A recurrent topic in my conversations and my tweets. I have never stopped learning. I see myself as a perpetual learner. I love having those epiphanies about concepts. Magic connections that happen between fields that theoretically are not connected at all.

I cannot stress enough it enough. Having a structured approach to your learning can make a huge difference. Having systems in place, avoiding waste energy and increasing focus. It all will help you overcome your challenges and learn at a faster pace. Do you have your insights? share them!