Mentality as a beginner programmer

I remember the first time I learned to program I had a very different idea of what it meant to me than I do now.

My mind was always focused on the big things, the flashy things, the interactive things… the glory. I always wanted to get past the mundane stuff like string manipulation, data types, etc. I thought, who cares if I can reverse a string 3 different (and sometimes impractical) ways?

What I wish I considered then was that these “small-scale” skills are actually big-time things. I think of football (soccer): you never need to juggle the ball in a game, but the control and connection juggling requires to have with the ball leads to all sorts of intuitive improvisations to resolve unexpected issues as they come up.

What are some things you wish you’d have seen differently in the beginning?


I’d wonder what makes me a better programmer, what should I learn next.

It is simple concurrency. it isn’t easy to properly understand it in depth, but build a working knowledge. Pretty much you can’t escape it in modern programming. It is also something that I have seen got wrong so many times, even by professionals who should know better. It will cause intermittent bugs that are likely to be hard to debug if you don’t notice you haven’t got any concurrency protection in place.

That and design patterns, understand how the benefits of the way code is/has been written (such as decoupling). Again, so many professional programmers go through the motion of doing the same layers in their web API back end (for example) but when questioned on why they can’t actually break down and defend their choices, it’s just what they learnt and what they do. I actually have seen a tech lead ask a whole project (multiple Dev teams) what the benefits were of doing some way x and not way y - it sat there for a day with nobody able to give a valid reason. The answer was actually simple and the tech lead was to focused on solving their issue, they were suggesting to ruin the current decoupling to solve it when in fact there was a simple solution. Failure at all levels. So yeah don’t just learn them understand them, their advantages and their disadvantage, because everything in programming is a trade off, typically between complexity and maintainability.

Nail those two things and be able to demonstrate that and you are ahead of a good chunk of the job market.

Oh and finally, something I’ve said before. In case you can’t guess most (maybe not most but a significant percent) professional programmers, as with most jobs, are actually pretty poor and over paid for their skill level.


I always think I know a topic, but then I end up finding out there is so much more to learn.

It is easy to skip over the basics, but without being able to understand the basics and key skills, you can’t appreciate the larger picture.


I have just embarked on this journey and although I have tried to be a developer before I can completely understand the point made in this article, before I was also thinking about the big and shine softwares that we have around us.

However now I am trying to focus on those small building blocks that will be required to reach my goal of developing interesting applications. As an adult learner it is difficult sometimes to avoid overthinking while you are trying to learning something different but for now I think that I’m at least have the right frame of mind to pursue this goal and can’t wait to see what I will achieve at the end of this journey.


No matter how big the outcome, it all follows small steps. Patterns emerge.