Learning New Programming Languages
I wouldn’t brand yourself as a programmer who knows x language or y framework. This mindset limits your opportunities. Rather, it’s better to be able to learn new things on the fly—as “technology is always changing”. Even in my short lifetime, I can come up with tech that has bit the dust. Anyone still using Adobe Flash Player?
At the same time, it’s hard to change. If you’ve been coding in the same language for years, the new thing probably feels transient. The return on investment is hard to calculate—what will you get out of it? After all, at some level, most programming languages kinda do the same thing.
Well, a simple answer is that it makes you more employable. Over time, companies are transitioning to newer technologies. These technologies may not be better per say—but their popularity makes it easier to find tutorials, packages, etc.
Also, once you learn a programming language or two, it’s easy to pick up more. Granted, it’s smoother to jump between languages from the same paradigm—or influenced from the same predecessor. To a point, this is why I encourage people to master the fundamentals. They travel between languages.
Why?
Of course, there are better reasons to learn new languages than to stuff your resume with buzzwords. You can become a better, more well-rounded developer.
Some languages are better at some things than others. Thus, by knowing more languages, you’re able more effectively judge which one is better for a given task. Like, I wouldn’t use Erlang to do heavy processing with strings, or Python to perform CPU intensive calculations.
In a way, packages are more important than the language. Nowadays, computers are so complicated that no one person can understand the system front to back. And there’s no point to being computer-omniscient. We build software on top of abstractions—assembling the product piece by piece.
Thus, today, the language’s ecosystem matters more than its beauty.[1] Arguably, they are becoming a glue layer for combining packages. Without quality, up-to-date packages, the language is basically dead for mainstream use. Consequently, we just aren’t aware of all the code in the system—that’s fine. Hopefully, someone else is maintaining that stuff.
Plus, the future is uncertain. Over the last few weeks, I’ve watched a handful of videos demonstrating the capabilities of GTP-3. Sure, they’re probably cherry picking the best examples, but it’s still impressive. Even if the future still leaves room for the creativity of human programmers, we will likely have to shift with the times. AI powered tooling is coming. I doubt it will replace the profession anytime soon—real software is much too complex. Yet, we should remain aware.[2]
Some Tips
Ok, now that I’ve motivated you to learn things, let’s go through some tips.
An obvious first step would be to find official documentation for the language in question. This documentation will often be found on the language’s official website. While usually good reference material, the documentation is not always useful as learning material. Don’t get stuck in the trap of reading and trying to memorize language constructs. You need to take action—I like to implement small projects, data structures, or some algorithm.
Importantly, the documentation will hopefully list out the standard library. For me, the hardest parts of a language to learn are its libraries and it’s idioms. Some programming languages encourage particular approaches to solving a problem—you’ll pick up the nuances with practice. To help with this, consider glancing through other people’s code. You can get a feel for what to strive for by reading well-written code.
On that note, “Google’s your friend bruh.” There are a million blogs, tutorials, videos, open source projects on the Internet. For those more old school, books exist. Just pick something and stick with it. Implement that tutorial and try to change the code.
Also, make sure you’re looking at the documentation for the correct version. The docs for version two instead of three are—well—not helpful.
I’m being a bit bold here. Yet, I feel like it’s true that “better” programming languages often struggle to get and maintain a foothold. There is a lot of languages, and the popular ones usually gained status due to historical quirks. ↩︎
I’m not a AI doomsday person–yet. But, I do think that future languages will gain popularity via how well they cooperate with tomorrow’s AI-based tooling. ↩︎