6 Stages of Learning a New Programming Language
Learning a new programming language is a process that allows you to learn critical life lessons.
We ask our programmers to learn a lot. With big data, AI-machine learning, and cloud computing, developers are trying to overcome a mountain of challenges in systems development. All of us who are developers are not just programmers anymore. With a new architecture, we are skilled in learning about new infrastructure designs for our systems. With new AI-machine learning algorithms, we are skilled in learning mathematics, statistics, and functional programming. With big data, we are skilled at learning all the different APIs available for analyzing our data.
In a way, our jobs as developers are becoming multidisciplinary. The biggest challenge that we have in thriving in this multidisciplinary world is learning.
It’s a challenge to learn programming languages fast and learn about different subjects deeply. But it’s such a fun process. For me, it is learning that keeps me coming back to programming again and again.
By learning all the time, you add to your life in the following ways:
- meeting new experts in the subject area
- bringing new creativity into thinking about your projects
- expanding your career prospects
- overcoming boredom when you become complacent at your current job
- staying current in the technology arena
- finding new passions in life
In my last article, I let you in on the secret that allowed me to learn many programming languages with speed and agility.
In this article, I want to break down the learning process so that you can have the big picture of learning new languages and concepts. Sometimes, it is a ten-year hike up the mountain of learning new languages. Just when you think you are a Python guru, you find out you can do even more projects in other varieties that will sharpen your usage of Python for specific purposes that you never thought of before.
In the end, it’s all in the fingers.
Once you are an expert, you will program with the agility of a gymnast, and your fingers will lead the way while your brain is an efficient and creative driver.
The reward is not job security, but life security.
It’s the security of knowing that you can learn anything complex. It’s the security of knowing that you can overcome any hurdles in problem-solving.
In psychology, internalizing knowledge also involves internalizing behaviors. By internalizing knowledge, you create new paths of thinking that will lead to the following:
- transferring knowledge from short-term memory to long-term memory.
- creating knowledge paths that will enable the absorption of new knowledge.
- enabling the creation of new knowledge acquisition, knowledge retention, and knowledge creation behaviors.
Starting With Key Elements and Concepts
Initially, when you learn a new programming language, you want to focus your study on the key elements and concepts of that programming language. Making a list of the “core” learnings for a programming language and going through them step by step is the way to go.
You don’t know what you don’t know
If you want to learn Python, ask an expert Python programmer or a teacher of Python to draw you a list of “core” learnings. You can also go through a course that will step you through the foundations of programming in Python. Search for a list of interview questions for that programming language.
Branching Out to Ask Enough Questions to Hit the Right Ones
When you are learning “core” concepts in a programming language, do you frequently make a list of questions to ask? I usually find that I digress a lot. That is, I tend to follow my train of thought down the line until the very end.
So I started with concept A about Python, then ended up googling a whole lot about object-oriented programming in Python, which led me to scope out a potential project to do later. Through this process, I bookmarked syntax conventions, object-oriented programming concepts, and a list of frequently used data structures. The right questions to ask are probably buried in one of these webpages that I just bookmarked. By reading through these websites, I will be able to compile a list of critical questions.
You learn to ask the right questions to learn the core skills.
Building Habits to Learn Daily
Some of the best takeaways from learning many programming languages in my career are the habits of productivity that I’ve built into my life. Throughout my career, I dedicated at least two hours to learning every day. That is a lot of time: 2*365*15=10950 hours. Outside of work, just like a physical fitness routine, I have a mental fitness routine that spanned 10,950 hours over 15 years to allow me to learn new things. Most of the time, I just woke up at 5 a.m. instead of 7 a.m. or went to sleep at 11 p.m. instead of at 9 p.m. to give myself that added amount of time for learning.
You learn that learning is fun, learning is on your own time, and learning is a passion.
The Snowball Effect
When you overcome the difficulty of learning complex concepts and complex hurdles of your projects, it has a snowball effect on your confidence. I’ve seen that with my work. It’s not exactly the state of “flow”. It’s more of a kind of motivational energy that perpetuates your entire life. It’s the same effect as drinking coffee, going on a juice cleanse or living a healthy lifestyle. You ride a kind of energy wave of learning.
This motivational energy translates to wanting to learn all about infrastructure, design, and storage. This motivational energy translates to wanting to try programming in different ways: functional, imperative, procedural, event-driven, flow-driven, etc.
This motivational energy translates to asking why questions such as “Why are we designing this part of the system this way? Why do we use this programming language for this project? Why do we select this infrastructure technology to scale up our project? Why are we coding this part of the project in this way? Why are we designing the error handling this way? Why are we designing the messaging handling this way?”
Asking these questions will lead you to find out the how. Working on projects that will consistently allow you to learn the how to the right questions of why will allow you to become proficient much faster.
You are motivated to ask the why that allows you to find out how.
Building a Habit of Repeated Practice With Risk-Taking and Creativity
You are the owner of your programming career. Everyone’s different in the amount of risk they are comfortable with. Programming allowed me to learn to take measured risks in my career. It taught me confidence in my problem-solving abilities. It taught me to be confident in my creativity.
This is all due to my repeated practice of the programming languages that I’m most comfortable programming in. Repeated practice does not have to be boring. In fact, to be truly proficient in a programming language, taking projects that will allow you to learn different parts of the programming language is essential.
You can only learn to be creative in problem-solving if you learn different ways to problem-solve. You can only be efficient with your code when you think about the best ways to write your code. Only through repeated practice can you have “ah-ha” moments about pieces of code that will allow you to come up with the most efficient and effective code.
You learn to be proficient by learning to be efficient and creative.
Relying on What You Know to Leap Forward
Finally, as you have learned and practiced programming languages that you are comfortable with, you can now leap forward in your career. This is usually when you progress from a junior developer to a senior developer.
You will rely on all your knowledge of the why and how to ace those interviews to move to the next stage of your programming career. By now, some of this is already in your fingers. You can code with a certain agility in the languages that you are comfortable with.
You don’t work long hours anymore. You have time to go out with your friends. You finish your workday and take vacations. You mentor junior programmers. You set examples and use best practices at work. You speak up at architecture meetings and put in your two cents. You are known for being a certain kind of an expert on your team.
Congratulations, you have internalized the programming language that you’ve learned into long-term memory. It is now in your fingers.
Now you know the process of learning any new programming language. You know that you can’t quit in the middle. Every two hours spent programming are two hours you spent away from your loved ones. So make those two hours count. Allow those two hours to multiply each day until you’ve learned and internalized the concepts.
Once you are proficient after working on enough projects, know that this is not the end. It’s a new beginning. Start from zero to learn and internalize new programming languages and new programming concepts again. Once you increase new breadths and depths of your knowledge throughout your programming stack, learning will flow naturally and become a part of your life.
What are you waiting for?