Skip to content

The 4 Stages We Go Through To Become Programmers

The four mental stages we all go through when learning to code.

4 min read

Four Mental Stages

Learning to code is a roller-coaster. A mental journey from despair, anxiety, stress, happiness, success, joy, fulfillment, depression and so on...

These are all feelings and we need to be aware of the meta stages of our transformational journey to become professional programmers.

This is not a trivial quest. It is a journey that requires dedication, discipline and some rest in between.

Let's go ahead and explore the 4 stages that all of us will go through as we start our learn to code journey.

1. Unconscious Incompetence

Last year I decided to take the leap into software engineering and take my itch to become a developer seriously.

Right after making this decision I recall I was lead into a new adventure based on some mystical force. I just wanted to dive deep into it for some reason. Without even having the fundamental knowledge on how to build a website.

Heck, I even thought Java and JavaScript were the one and the same language!?
It just felt right and everything I read and listened to led me into the belief that I could master a new profession in a few months. I was jumping from one course to another, from one book to another without really grasping the fundamental concepts and principles.

I learned that this was driven by a great portion of confirmation bias.
What we tend to forget while being newbies, is that we don’t really know what to dive deep into. What to truly learn and why. We are confirming our own biased thoughts of what is the best choice.

And our social media feeds doesn’t make it easier for us.

We are naive, eager and ambitious. Doing lots of mistakes without even knowing them.

Decisions are hard to make since we don’t even know how to make the right ones.

We don’t know what we don’t know.

As we proceed on our learning journey we will unconsciously confirm our own biased thoughts. We gain some knowledge as we are scratching the surface and it tickles. We are looping through acquired knowledge and we create a learning base, while “trembling in the dark”.

But be aware of…

  • that this is a key part of your learning, it’s an exploratory phase,
  • that you may not know the prerequisites to thrive yet,
  • that focusing on the basics is key,
  • to don’t get too caught up in the long term vision, just yet.

2. Conscious Incompetence

This is the phase when we have recognized the skills we need and we want to start applying them to new projects.

Let’s say you have acknowledged you need to learn HTML, CSS and JavaScript to build a website.

Maybe you have even learned enough already but don’t feel completely happy with your ugly static website looking as if it was built in 1995 (yes, I put it out there. It’s nice to have something to look back on).

This is the phase when it is so easy to give up. We make a lot of mistakes and it takes tremendous amount of mental power to make sense of it all. And to get back on track…

This is really a humbling experience but we are ready to go ahead and we know one thing is for sure:
It is not going to get easy.

3. Conscious Competence

Wow, this is when interesting things start to happen. We get big dopamine hits since we are probably more aware that we are on the right track.

We can get stuff working and we probably have a website up and running.
Even though our “brain hurts” and we are aware that this will be hard, we are consuming lots of energy.

If your personality is like mine, much of the energy is probably related to worries and concern.

The cool thing is that it starts to make sense. Whatever you are building, you may have grasped some sort of purpose. You start to connect the dots between what skills you have gained and how you can apply them and WHY.

It is probably now, when we start to realise WHY we started in the beginning.

Now, more than ever, it is important to keep going.

4. Unconscious Competence

This is when programming starts to feel like second nature to you. Maybe you are comfortable enough to start a blog to share your learnings, or you have mentees you push and teach your learnings to.

Either way, this is the state where you feel YOU ARE IN COMMAND.

Many people may experience imposture syndrome and this is probably the unconscious parts of your competence level.

You may not even know or acknowledge how good you have become?

Things starts to come in place, it’s coming to you…

The Journey, Visualized

Tim Urban and his team at Wait But Why illustrates this whole journey really well by drawing the relationship between Conviction (Consciousness/Awareness) and Knowledge (Competence).

It’s an emotional roller-coster.


The four main phases described above can easily be mapped to the four stages. Starting off with confirmation bias and emerging into a “grown-up” phase where we are humbled and enough competent to get going.

Wrapping Up

Here are the main takeaways from todays lesson:

Make a commitment: It is key to persist with your practice.

Accountability: You need to keep yourself accountable. There is no right or wrong but my way of doing this is that I have asked for a weekly meeting with a team-mate that I have selected as my mentor. I push myself to create something every week to go through with him. It doesn’t have to be much, a small little project to show or a written article, but at least something to discuss and get the ball rolling.

Study regularly: Invest in study-time. Block your calendar to read that book you bought/borrowed or that course you enrolled to.

Build Small projects: Learning by doing. This is all about keeping your motivation up and learning how your fingers and brain can dance together so that you can show your work.

Tinker, practice and the power of play: Don’t forget to have fun. Playing around and diverging into new endeavours. It’s hard enough to follow a curriculum but you can spice it up by doing something outside that path. Maybe you have an own project idea that you want to try out?

Cred section 🙏🏽

As a closing note, I want to give cred to the online teacher who ignited the idea of writing this issue: It is from Tim Buchalka’s video below that I recommend every beginner developer to watch.