In the near future, which is already here, the best programmers will emerge from Africa. I know that may sound like an outrageous statement but I will tell you why. Learning programming or new technologies in Africa is not so easy. The challenges of power, cost of internet data, bad and unsteady connectivity, cost of infrastructure, among a host of others, is enough to demoralize you. But as Africans, we always seem to find a way around bad situations and optimize them. The result, most times, is an highly resilient, efficient, secure set of codes that are also economical in power and data because they need to be more robust in our environment. So if anything (codes, application or technology) works here, it works everywhere.
The result of putting this codes together is good, but what about the process? How do beginners overcame the challenges of learning how to program? The physical / resources challenges can be optimized based on the situation, but the mental and psychological challenges that every beginner face can hinder their progress or even make them give up totally on learning the skill.
Have you ever tried learning python, ruby, PHP or even Java, and felt like you understand almost nothing?
Are you sometimes in a state where you felt like every programming article or book out there contains stuff that goes over your head?
Sometimes, you can’t help but feel helpless and stupid while learning new stuff – myself inclusive.
Learning programming is tough and challenging. I know this and I’m sure a lot of beginners will say that the same. However, with the right approach to learning, it can be fun — at least for me, after exhausting threes years trying out different learning techniques.
From personal experience and research, I found out that the reason why learning programming appears to be challenging and frustrating is simply because the due process is not always being followed. When the right steps are skipped, it often leads to frustration and sometimes, disinterest.
You need to know how to crawl before you learn to walk. You need to be able to walk before you learn to run, sprint or even hop. If you skip a step, you’ll get bruised intellectually and emotionally.
Over the course of my espionage with top programmers, I figured out that there are different phases of growth in programming.
- The Baby Phase
- The Child Phase
- The Teenage Phase
- The Adult Phase
I will describe each phase briefly so you understand where you are and where or how you should focus your energy.
- The Baby Phase
If you’re starting out with any programming language, you’re in the Baby Phase. You’re clueless about that language. The syntax looks foreign.
What you should focus on in this phase is to thoroughly learn the syntax so you know what others are talking about when they say things like objects, arrays, functions, etc
2. The Child Phase
You’re in the Child Phase if you’re already comfortable with basic syntax of that language. At this stage, you don’t know how to build things from scratch yet.
You often need help. Maybe you can copy-paste and modify something after hours of googling, but you’re still not confident in your programming skills in that language. You don’t know how to build things from scratch.
In this phase, focus on building simple projects like a calculator. Maybe even showing a menu when a button gets clicked. It’s okay to copy-paste at first, but make sure write your component from scratch afterward so you understand the underlying mechanics.
3. The Teenage Phase
You’re in the Teenage Phase if you already know how to build stuf
f from scratch. You’re somewhat confident you’ll be able to build anything DOM related(in the case of JS), but you still can’t do them with a snap of your fingers.
Your code may be messy and unorganized. It may lack best practices, but at least you got things working.
What you want to do here is to learn best practices from books and experts all around. Absorb what you can, then, rebuild what you’ve built. Use the new practices you’ve learned to internalize them.
4. The Adult Phase
Finally, in the Adult Phase, you know enough of that programming language to be dangerous. You can build almost anything you want. You’re confident with your code. It’s clean. You know the best practices and you’ve used them all. Now it’s time to leave the nest and look for something new, something related.
Here, you have a few options:
You can learn a framework for that language.
You can dive even deeper into that language.
Choose any the option you want here. What you choose depends on where you want to get to. (Remember, your motivation is the deciding factor. Don’t let anyone else decide for you).
If you choose to learn a framework, you’ll be able to build complicated applications that can take a ton of work if you tried building the same thing with just the pure syntax of that language.
If you choose to dive deeper into the language, you’ll learn how to write better, cleaner code. Eventually, it will help you better at the framework you intend to pick up.
If you’ve decided to embark on your new learning journey, and are all pumped up, be aware that you’re going to start all the way from the Baby Phase for this new thing. You have to work your way through the Child and Teenage stages.
Is there a shortcut?
I think that roadmap is the shortest path there is. Femi Tairu, (@_emmarex_ on Twitter) a former CS course mate who created the Roadpal app told me in 2018 that one has to learn the fundamentals of any programming language before going into advanced stuff like frameworks and all.
He said “Without your fundamentals, you’d just remain confused and overwhelmed. Fundamentals is the shortcut to programming mastery.”
This is especially true if you don’t have a mentor with you. This is where you need to stay motivated, sane and mentally balanced.
With all that in mind, I hope you’ll approach your programming career from a different perspective, from this day onward.
Yours in learning,