There’s no question that different programming languages are useful for different projects — it’s hard to justify completing every single project that comes across your desk in the same language, unless you only know the one. But while it’s often a good idea to be able to code in different languages if you’re working on a wide variety of projects, it’s not clear if there’s a magic number of languages you should know.
One, if…
If you work on the same sorts of projects over and over again, you may not need to know more than one language — at least at an expert level. There are a lot of benefits that come with expert-level knowledge of a language (like being able to put together a new app overnight) and it’s hard to reach that level with a single language if you’re constantly switching between other options. On top of that, there are plenty of frameworks that can extend the capabilities of a given language. However, if you’re interested in building bigger projects on your own, you’re going to eventually need to pick up another language or two.
It’s probably better to preemptively pick up a new language now, so you have more opportunities to work with it before you really need it. The Pragmatic Programmer goes so far as to suggest that all programmers should learn a new language every year if they want to stay relevant. Whether or not you need to learn a new programming language every year is a question that you have to answer for yourself, but it certainly makes sense to continue your education as a programmer and make a habit of trying out new languages.
The Right Tool
When you’re running your own company, the number of programming languages you need to know goes up. That’s because you’re the person in charge, even if you’re working with other programmers. At the very least, you need to be able to identify the right tool for any job that comes up. You need to have the right tools for your domain — what languages you need differ dramatically. If you’re working on enterprise web apps, you need different tools than if you’re working on a personal mobile app.
For the broadest set of tools, there are some basic options. You have to know a lower level language (like Java, C or Go) and a higher level language (like Python, Ruby or PHP). That division will allow you to have at least one language to work with core servers and other lower-level tools that may need to interface directly with the operating system. It’s also important to pick up a higher level language that will help you with web development these days, along with a framework — even if you’re not building a web app, you’ll probably need a website or two. Think about what you’ll need in terms of platform-based languages as well: go deeper than thinking about the operating system and consider if there are particular devices you expect to work with.
Image by Flickr user Jon Smith