The Problem

The Challenges You Will Encounter Becoming a Programmer

You Don’t Know What You Don’t Know

About 12 years back, I took classical guitar lessons from a grumpy but wise old German gentleman. A few weeks into my lessons, he said to me that I had come a long way on my own but that there were many gaps in my knowledge and abilities and that these gaps were preventing me from progressing.

Now there was nothing magic about what he said, but it did reveal to me that there are things that I wasn't aware of. Yip. There were things I needed to know but I did not know that I did not know. I was unconsciously incompetent. It’s a thing! You can read more about it on Wikipedia under the Four Stages of Competence.

Where do I Start?

This is the first question most beginners will ask. And it is an important one because stating at the wrong place will hamper your progress substantially. As a beginner, you will not know the answer to that. So you will do what any normal person will do. You Google it!

The problem is that you now have thousands of answers to the question, "Where do I start?", but not the knowledge to trust any of them. And these answers vary substantially.

I encourage you to read some of the answers and then come back and see my answer to this question, "Where do I start?"

The Learning Cycle

Here is my answer. We need to answer more than simply, "Where do I start?"

To become a programmer, we need answers to the following:

  • Question 1 - What topic do I start with?

  • Question 2 - How much do I learn about that topic?

  • Question 3 - What topic do I tackle next?

  • Repeat From Question 2

Question 1 - What topic do I start with?

To become a programmer, one needs to master several technology stacks. A technology stack can be seen as the bits and pieces that are used to design, build and run an application. This covers everything from hardware, operating systems, databases, programming languages, programming libraries and frameworks, design patterns and principles, system architecture, version control, security, application testing, deployment and monitoring to name a few. So where to start indeed?

Question 2 - How much do I learn about that topic?

We do not need to know everything about a topic before we can make use of it. It may slow down your progress. The approach I take is to teach you only what is necessary to know at any specific point in time to do the job at hand. This way, we learn something useful fast and prevent information overload at the same time.

Question 3 - What topic do I tackle next?

Taking classical piano lessons for some years you will progress from Preliminary to Grade 1, then to Grade 2, Grade 3, and so on until you reach Grade 8 or progress even further. The point is; that there is a definite, well-designed method at work. Similarly, tackling the right topic next makes a big difference in the speed at which you will progress.

In Conclusion

To become a programmer with the least amount of resistance, you need to know which topic to tackle, and how much to learn about that topic. Then you need to know which topic to tackle next, and how much to learn about that topic. And so the cycle continues until it's not fun anymore. By the way, you will never be done as there is always something new to learn.

Now where are you going to find such a well-designed method that will address all the above questions? Glad you asked. It just so happens that I have developed such a method. I call it The Becoming a Programmer Series and we will look at that next.