Learning New Programming Language – Python

​Hey guys, just wanted to share about my personal experience learning a new programming language.

On Wednesday evening June 15, 2017 (GMT +9), I took my first baby step towards learning Python.

You might ask why?

A friend of mine, who is also a programmer asked me if I wanted to try the data analyst Udacity Nanodegree.

I wanted to learn Python, mainly because of its rising popularity.

But then again, there is also TensorFlow. I also wanted to delve into machine learning and AI as well.

In this post, I want to share about my personal thoughts and feelings regarding my experience learning Python or a new programming language.


Consistency is Key

When I hear the world consistency, the first word that comes to mind is "regularly". The term regularly is a relative term. Regularly compared to what?

In my eyes, consistency in programming, is writing code at least 4-5 times a week, with each session being at least one hour. Please don't quote this as the absolute standard. This is just my personal opinion derived from my experiences. Everybody learns and processes at a different wavelength and rate.

One thing I would like to point out though, is that because everybody is made differently, the only way to find out the definition of consistency that matches you is to experiment.

Going bonkers and writing code 10-12 hours a day is not going to work for everybody.

In most cases, that is a recipe for going into coding auto-pilot mode.

Right now, my goal for the next couple of month is to bang out at least 15 minutes of writing code in Python everyday.

My objective is to get a general grasp of the flow and syntax of Python. Note, however that I am not a beginner at programming.

If you are a beginner, I don't recommend this approach.

In a later section, I will discuss the possible learning plans from both the experienced and non-experienced programmer's view.

Code Everyday

Once again, I have realized the importance of coding everyday. Even if it is just 15-30 minutes a day, when learning a new language, you have to learn a new set of API and syntax. The logic and way of thinking will likely overlap a lot with your existing knowledge, so you don't have to put in as much work as when you picked up your first programming language. 

But, we do need to get used to the new API, programming style, syntax and idiosyncrasies that the new language has to offer.​

Building up on the last section, where we talked about consistency, it is important to not only be reading about the new language everyday, whip out your notepad or IDE.

Write some code. Translate your previous work into the new language. Build something meaningful and work on it everyday.

Even if you put out eight hours on Saturday, if you don't write a single line of code from Sunday to Friday, the hard work that you put in will most likely not translate into muscle memory or long-term memory. ​

Learning Programming for the First Time

This is honestly, one of the more difficult times during the life-time of your journey as a programmer.

And who hasn't been there? We all started from the ground up right? Nobody was born with programming knowledge embedded into their brain.

Therefore, my advice to those learning programming for the first time is

First comes the motivation. Next comes the hard work.

When you are motivated and committed to JUST DO IT, it becomes more natural to put in the hard work. Naturally, during the course of your journey, the hard work will do its job at chipping away your motivation and commitment.

Utilize the internet and local programming community around you to ensure that you don't end up just quitting.

For more information, read up on how to become a better programmer. It will pay dividends to know these techniques earlier on in your journey. 

When learning your first programming language, make sure to not cut any corners when learning the fundamentals of programming.

Having a weak foundation will stunt your growth and bite you in the butt in the future. If you absolutely don't understand something, try asking a mentor or a more experienced programmer around you.

And also, in this day and age, we have access to almost limitless amount of information thanks to the internet. Build up your core and make sure to master your first language before proceeding to another.​

Learning another Programming Language

If you are already proficient in a programming language, you already have the skills to learn.

Think of it as like learning to ride a motor bike after learning how to ride a regular bicycle. Although some things are different, the fundamental aspects of balancing and whatnot are the same.

In another words, what you learn in your first programming language will translate into your next programming language. The more knowledge and experience you have, the easier it becomes to learn.

Right now, as I am learning Python, I realized that I already know most of the programming concepts. Like the concept of classes, data types, etc.

What I need is practice writing in that language, getting used to its syntax, flow and idiosyncrasies. Therefore, I sat down and devised a plan to accelerate and learn effectively. Though it is still in the making, I have decided that the following approaches will help accelerate my learning.

Learning Plan

Like most thing in life, learning programming requires planning. You can go into it head first or blindly just follow a video course, but the gains will be minimal in comparison to devising and following a detailed plan that works for you.

Books and videos are produced for the masses. A specific learning plan is built just for you.

Below is a possible set of actionable items you can implement. Please do take note that a properly formed learning plan is far more comprehensive, with goals and objectives for learning, detailed steps, action plans, measuring halfway points, etc. ​

  • Write out solution to problems that I wrote in the past using other languages.
  • Find a project that is medium sized and begin working on it right away.

The Importance of Learning With a Purpose

While learning a new programming language, framework or library, after each endeavor, I eventually began to notice something. Sometimes, I would learn things because I wanted to use it to build something useful and meaningful to me.

Other times, I would just binge learn for the sake of learning.

Once you have been programming for a couple of years, you will become accustomed to learning new things. Almost to the point of compulsion.

If you ever find yourself binge learning without a purpose, do yourself a favor and stop right away

Believe me, I have done this before.

Knowledge acquired from binge learning is useful temporary knowledge at its best, and meaningless at its worst.​

Click to Tweet

Lets say for example, you learned angular JS. And you just wanted to learn it because it was a hot topic. If you aren't using it any of your side projects, or at work, you are eventually going to forget it.

The term use it or lose it applies even more so to programmers. In this day and age, hundreds upon hundreds of new technologies come and go. 

Assuming you are learning multiple things simultaneously, the technologies that you never end up using is eventually going to exit out of your brain, unless you develop your muscle memory and brain through many hours of practice. 

Even if it remains with you, if you don't use it, what is the point of picking up that piece of technology?

Okay, I am sure that it wasn't a complete waste of time. But what I am saying is that your time could have been invested elsewhere with potentially greater returns.

All the best!

This post is not meant to be a tutorial, so I will keep it brief. Nevertheless, for those read this article, I hope that you got something out of reading this.

Please feel free to ask me any questions or leave suggestions via comments. Until next time, peace!​


About the Author Jay

I am a programmer currently living in Seoul, South Korea. I created this blog as an outlet to express what I know / have been learning in text form for retaining knowledge and also to hopefully help the wider community. I am passionate about data structures and algorithms. The back-end and databases is where my heart is at.

follow me on: