To Learn a New Programming Language, Start Over

Baby at Computer

Programmers take pride in their ability to learn new skills easily, relying on long-ingrained concepts and abstracted methodologies to pick up a new way of working with minimum difficulty. Switching smoothly between tools, languages, or environments is certainly an ability to be proud of, yet it’s not always fun: even for those who enjoy learning new skills, changing contexts this way can put a strain on productivity.

 

After years of study, training, and work, it’s not surprising that developers in all communities and backgrounds have their preferences of an ideal language, unique coding style, personal working habits, etc. These preferences express themselves in day-to-day work, and become embedded in the fabric of the code.

 

Maybe that’s why transitioning to a completely new system can be such a struggle — it’s not only about acquiring a new skill or learning to use a different tool; developers tend to excel at that. Rather, because of differences in systems and processes, it requires the developer to reinvent a bit of themselves. Whether transitioning to a new job or merely changing to a language and environment better suited to a project’s goals, learning to express yourself in a new language can feel like working out for the first time after a long hiatus: you remember how everything is supposed to work, but it’s all a little bit off.

 

I’ve struggled with this transition a number of times, and it’s always a bit painful — I don’t think we’ll ever be rid of that. But over time I’ve found that there are a few strategies that get you up and running more quickly and with less frustration.

 

 

1. Pretend you don’t know how to code, at least at first.

 

You may have been writing code since before I was born, but your new language doesn’t know that. It’s easy to assume that you can skip the basics, since many object-oriented languages are similar at a general level. Don’t fall prey to this trap! You may be 95% correct, but that 5% you missed will come back to rough you up when you don’t expect it and can’t afford it.It may be tedious, but a thorough understanding of your new language will seal the deal on your performance. Reading or hearing material aimed at presumptive fresh acolytes will also provide you with an insight into the nuances and assumptions inherent in the language and its usage.

 

Stay humble, and start from scratch.

 

 

2. Read, read, read, read, read.

 

The key to internalizing a new language lies in absorbing the paradigms that others have used. Read as much code as you can in your new language, spread across as many projects as possible, with as much variety as you can find. Small projects, large projects, professional code, amateur code, self-contained tools, modularized components — anything you find, with rare exception, will enhance your understanding of how people use this new language. It’s more than understanding the syntax, it’s understanding the way of thinking, too. Even poorly written code is useful, so long as you can identify it as such and learn from its mistakes.

 

Reading code in this way and for this purpose is very much like starting to read when you were a child. You knew the basics of the English language, you learned spelling, grammar, and composition every day in school, but what really made you fluent was being exposed to a variety of writing, from newspapers and magazines to fiction, literature, essays, online articles, and everything else in between. The bigger the picture you get at the beginning, the better off you are later on. A broader base means you have more material upon which to base the unique idiom you develop for yourself.

 

 

3. Finally, accept that the learning process will take time.

 

If you work at it, you might cut the time down from months to perhaps just a week or two, but you need to let yourself stumble around for a while. Forcing yourself into habits before you’re ready will only inhibit your later success. Let yourself be flexible and change up your patterns until you find ones that work!