Sent from my ipod

Learning New Programming Languages

January 12, 2015

We spend about a third of our adult life at work. Consciously or not, a lot of our mental bandwidth is spent on thinking about future career options. If you are like me with a background in computer science, your default option is to become a software programmer. There seems to be an unlimited demand for programmers. Unless we see a repeat of the dot-com bubble pop, the demand for programmers will rise for the foreseeable future.

I began my career working for Goldman Sachs as a software programmer. I only get to spend about 50% of my time programming at work nowadays, but I need to learn new programming languages/ technologies all the time. In my experience, if you want to keep up with programming for the rest of your life, you have to be good at learning new programming languages.

My biggest insecurity during my first programming job was about my ability to sustain a lifelong career as a software programmer. I’m sure this question of being able to sustain a career for your lifetime is something almost everyone rattles with, but programmers may have it worse because of the rapid change in the software landscape. Especially the changes in the bread and butter of software - programming languages. Would I be able to keep up with these new languages as I got older?

Any high growth industry during its time is bound to such volatility in tools and procedures. Employees working in architecture and manufacturing fields in the 19th century probably felt the same way because there was constant change in tools and best practices until there was a clear winner in the way a new building was built or a new machine was manufactured.

Software development has an added dimension of keeping up with the continued rapid growth in computing hardware. Until the day Moore’s law becomes false and there is a clear winner in the way software ought to be developed, software developers have no way but to learn new programming languages. So how do we get better at learning new languages?

I’ve found that the biggest inhibition to learning a new language is fear.

Fear that a new programming language is harder than the one you already know. Fear that you are probably just wasting your time, because this new language will fail sometime in the future like a dozen other languages.

I am no expert in keeping up with all the new technologies, but I’ve been able to experiment my fair share with trending programming languages (you’ll know that a language is trending when you hear about it repeatedly on Hacker News or Quora) over the years. Learning a new piece of programming language is similar to learning a new language, except for one major difference - the programming language is trending because it has endured the test of the programming community over the years. A corollary to a language’s popularity is that the language is usually more programmer friendly than it’s predecessors. As a result, it is easier to learn. The strategy that has worked for me is to waiting till a language reaches the plateau of productivity in the Gartner’s hype cycle.

Most languages don’t get this far, but once they do - you can be sure that the new language is not going to be more difficult than something you already know. It’s just going to be different. There is nothing left except for having the faith and attacking it by jumping into it with both feet. This observation is not earth shattering by any means, except that this realization negates the fears of wasted effort and self confidence.

Of course, we don’t need to learn every new language under the sun. The jury is still out on how much energy you need to spend learning something new vs sticking to what you know. It is a fine balance. This mostly depends on your available time and drive. It’s a topic that deserves a post of its own.

I’ve only discussed programming languages here, but it could very well apply to build systems, third party services, development environments, deployment solutions, etc. So the next time you are curious about learning a new piece of technology, remember to have the faith in the larger programming community to only promote the tools that make the developer ecosystem a better place. Take that first step. Believe that it is easier than the language you already know. Get your feet wet. Pick a good tutorial and hack your way through!

Lets get in touch on : or via :