Coding Life

6 Stages of Learning a New Programming Language

Learning a new programming language is a process that allows you to learn critical life lessons.

Jun Wu
Jun Wu
Sep 6, 2019 · 7 min read
Image for post
Image for post
Photo by Max Ostrozhinsky on Unsplash

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

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:

  1. transferring knowledge from short-term memory to long-term memory.

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?

Better Programming

Advice for programmers.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store