Future Proofed Programmer

WHY and HOW to learn a new programming language

To be a long-term programmer, you have to love programming. You can’t just tolerate change, you have to love it.

Vinodh Nagarajaiah
Globant

--

At the onset of every new year most tech sites, bloggers and our favorite tech-gurus coming out with articles on what’s in — what’s not and what you should be learning in the new year. Don’t get me wrong, these articles are truly invaluable in pushing you to set yourself a technical goal of sorts. However, a critical part is missed out on all or at least most of these articles — i.e., WHY you should be doing the ‘learn new’ thing.

*** Broaden Your Horizon ***

Learning a newer language exposes you to newer concepts and programming paradigms. This exposure aids in increasing your technical understanding by boosting your programming knowledge.

For instance, a developer with object oriented programming language knowledge learning a functional programming language.

*** Keeping Pace With Accelerated Technical World ***

A new programming language learning helps the developer try to keep up with the ever-growing, ever-changing, never slowing tech world. A developer with a fixed mindset and immune to changes would face stagnation not only with his knowledge and skills but also with respect to his career. Such a developer in future loses his significance and ends up being frustrated and less confident.

"Innovation - the heart of technological change - is fundamentally a learning process." - Peter Dicken

*** Same Concepts/Problems But Different Paths To Resolutions ***

If struck with the same programming skills for long, the mind loses the capability to throw in fresher thinking. A solution that solved a concern sometime back might not be valid due to changing requirements and expectations. A new solution to the same problem needs fresh thinking and this is where learning a new language comes into play. The same applies to understanding the well-established concepts of programming language. In short, new language skills help trigger new ways to solve problems.

Case in point, a Java developer on jumping into GoLang world would learn how a complex problem of multi-threading is handled in a simpler way using Go-Routines. Also, how inheritance concept exists in GoLang without explicit hierarchy declaration, unlike in Java

*** Appreciate/Criticize Your Existing Programming knowledge***

Learning a newer language might as well make you appreciate your current language more.

Java v/s GoLang, learning GoLang might make a Java developer fall in love all over again with JAVA considering how mature the language has grown since its inception 25 years ago and how you can achieve practically anything you think of either via custom code or through innumerable plug-ins from the awesome and mammoth Java community.

On the other hand, learning a newer programming language often puts your mind into thought-provoking mode on why dint the older language take this newer approach. Accept it, newer language exists coz the older ones had something to be improved upon.

Java v/s Dart, Multi-threading - handled via thread in Java and via Isolates in Dart. Java carries that inherit risk of shared memory being accessible and modified by threads whereas Dart isolates multiple 'isolates' and manages communication only through messages and callbacks.Again Java v/s GoLang, learning GoLang would make a Java developer love the simpler, efficient Golang with a small learning curve. Also, GoLang's memory management is something which would make a Java developer go kill JVM for hogging system's RAM 😂

*** Career Growth ***

This one should be straight-forward. Learning a new language would elevate your position in your team and among your colleagues boosting your career prospects. New language skill would make you a better software designer/Architect by deciding on the right tool to be used the right way for the job at hand. New skill means that extra points on your resume that will open up newer opportunities.

As Proof, Increasing number of companies now prefer individuals who possess a secondary/tertiary skills along with their primary skills — You can be one of them too.

*** Cause You Have To ***

For someone being a programmer by profession, why wouldn’t they consider learning a new language !!! Remember something which was relevant a decade or more back will in most probability isn’t relevant now.

Mobile application development wasn’t relevant 2 decades back and hence languages like Kotlin, Dart, Swift dint exists but then the current scenario is well known.

*** Polyglot Programmer ***

Polyglot means being bilingual i.e., knowing and/or using multiple languages. Being a Polyglot programmer has two dimensions: One is to be able to use multiple programming languages in a single project as per need — meaning a programmer who does polyglot programming. Two is to master and be fluent in more than one programming language. Being a polyglot programmer takes a substantial amount of time but then the fruits borne are well worth it. Do bear in mind that just having the knowledge of multiple programming languages does not qualify you to be a polyglot programmer but that puts you on the path to be one.

"The only way to learn a new programming language is by writing programs in it." - Dennis Ritchie
Assuming that you have read through the WHY part, I believe you’re inline now to pursue further on the journey to learn a new programming language — i.e., HOW to learn. Learning in a structured way helps not only in learning of the language but also provides an insight into it’s very existence (among the hundreds of other languages).

*** Making a choice ***

The choice of language depends on one or more factors, a couple of them being — What’s in trend now?, Which language offers the best pay currently?, What language does TIOBE think is in demand?, What language skill can fill the gap the current programming language doesn’t? — etc… Why you choose a language a rarely a concern however, the debate on why the choice should be made based on what knowledge you gain rather than how much you get paid, but then the crux of the matter is — YOU LEARNING A NEW LANGUAGE.

"If you want a new tomorrow, then make new choices today." - Tim Fargo

*** Analyze your choice ***

Getting technical, It’s now time to analyze the programming language choice made to learn. It’s good to understand what programming paradigm does your new language belong to — — Is it Declarative or Imperative? Is it Functional or Procedural or Object-oriented? — — If you’re unaware of the terms just mentioned, then that should be your starting point. Understanding the programming paradigm your choice belongs to help in knowing how the code is organized, what’s the style of syntaxes and grammar etc… After gaining insights into these, if you figure out that the particular paradigm your choice of language belongs to doesn’t suit you then it’s time to go back to the “Making a choice” step.

“May your choices reflect your hopes, not your fears.” - Nelson MandelaProgramming Paradigm is a bigger topic in itself. Constraining ourselves to the task at hand, it is suggested that you go through only the required details of the paradigm and not dig too deep into it and thereby loosing focus on the goal of learning a new programming language.

*** Tools and Pre-Requisites ***

Get to know if your current set of tools like the IDE are compatible and suits well with your new language choice. If it does then well and good if it doesn’t find out the one which suits you and also your choice.

Each programming language comes with a set of pre-requisites. It’s best to ponder over them at the initial stages themselves than to get started with your learning and hit a roadblock later. As an example, the installation of JDK is a pre-requisite for learning JAVA.

"Man is a tool-using animal. Without tools he is nothing, with tools he is all." - Thomas Carlyle

***Mindset ***

This has to be THE MOST important skill necessary to learn anything new, not just a programming language. Restricting to the topic, Mindset here means knowing and always remembering that learning a new programming language is not about knowing the syntaxes — like how to code a for-loop, how to declare a variable, the keywords used etc… — but it's about understanding how and what different approach the new language takes in to solve an existing or a problem at hand and how it differs from the one taken by the programming language you already are aware of. Educating yourself in this regard will help in establishing a stronghold on the language and prepares you to be a better architect and a lead your juniors would look up to for help.

** Path to Learning ***

Figure out how do you want to be led into the new programming language you chose. Few developers are comfortable with following the official documentation, most are comfortable following an online tutorial (Text-based and Video-Based included). There’s no right or wrong in this. I personally feel the official documentation, even though start out well can get complex very soon — can be due to the language features itself or due to the complexity and advanced levels of English used in the documentation.

In this time and age, figuring out a good, affordable (often free) resource to get started with isn’t hard. Tons of free text-based resources are available for free and if your choice is videos then there’s Udemy, Coursera and let’s not forget the free and easily accessible YouTube resources.

*** Patience and Time ***

Learning takes time and time often tests the patience level. Depending on the choice made, you might be able to grasp and understand the new programming language sooner or might end up taking more time than others — Remember that IT’s OK either way. From my experience, learning a new programming language is an investment, an investment worth at least 5 to 6 months at a minimum.

"It’s hard to beat a person who never gives up." ― Babe Ruth

*** Staying Motivated ***

This should be easy if you started with the right WHY to learn a new programming language. Keeping in mind why you started with learning a new programming language might as well serve as the motivation to keep pursuing it and in the end, conquer it.

"All things are difficult before they are easy." - Thomas Fuller

DISCLAIMER: All the images used in the article above are copyrighted/belong to their original owner(s).

Thanks for reading. Special mentions for Mukta Belorkar and Yogesh Kokare for their inputs and reviews. Mash away at the 👏 button to help spread the love & show your appreciation.

😇 Click on the image below to know more about me 😇

--

--