As I’ve founded Coding Dojo and taught a lot of students, I get this question asked a lot. This is a good question indeed!
My short answer for this is “Yes and yes!” In other words, you have to know one programming language really well but also that knowing one or two other programming languages makes you significantly stronger as a developer.
Let me explain more in depth.
First, life as a developer means that you’ll have to get really good at learning new things.
Technologies change all the time. Even in the last 10 years, there were so many new languages, tools, and frameworks that were created. In fact, as one of the assignments in Coding Dojo for advanced students, we have them create their own framework. This helps the students understand more on how the framework can be created and unfolds a lot of magic that often students take for granted that are provided by the framework. It also helps them understand object oriented programming and how to build codes that are more modular. Although this does seem like a complex task, once one gets comfortable, it’s possible for someone to create an entire new framework for any given programming language in a few days. As it’s this easy for someone to create a new tool/framework/library, you can imagine why there are so many new tools/libraries/frameworks that are introduced to the developers community each day. For example, if advanced students can create their own complex framework/libraries in a few days, imagine what a very experienced developer could do given enough time. No wonder why there are so many frameworks and libraries introduced all the time!
What this means is that if you work as a developer, most likely you will have to get very used to learning new things including learning a new language, learning a new framework, learning how to integrate an existing library/module to your code, etc. One of the best way to build this ‘flexibility’ is to get used to having to pick up new things while you’re learning to code. Sometimes, when you get too comfortable with just one programming language, it puts you in a comfort zone and doesn’t stretch you enough, causing your brain to get comfortable instead of being stimulated and growing due to additional challenges.
It’s much better to hire someone who is good at learning new things rather than someone who insists on using a particular language or framework, especially when the developer hasn’t really been exposed to varieties of languages and frameworks.
Second, knowing another programming language and a framework solidifies your understanding of the fundamentals
When one gets too comfortable with one programming language or framework, it’s easy to take for granted what the framework is doing. It also limits your perspectives as you may get too familiar with one way of doing things while another language/framework may really have new perspectives that’s enlightening and frankly just quite better.
A good analogy for this may be food. Imagine that you grew up in America and all the food you had was traditional American food. Imagine that you had no other international food ever in your life. If I asked you what your favorite food is (out of all the countries) and why, your answer wouldn’t be as rich and in depth as someone who actually tried food from multiple countries. This is also the same when you ask a developer what the best framework or programming language would be for a specific application that needs to be built. If you haven’t had experienced other languages or frameworks, you’ll insist on just using the tool you’re most familiar with and may even argue that the language you know is the “best” language/framework for everything! This is a big mistake and something that could be very costly for the team.
Earlier in my career, as I only knew a few frameworks well, my answers and perspectives were limited. Now that I’ve got to learn the philosophies and thoughts behind a lot more frameworks, it has really helped me better understand pros/cons of each framework, when one language would be better than another for specific use cases, and which tool we should use for when. It also helped me form stronger opinions on how the system could be architected. For example, from Rails, I’ve learned and appreciated their approach to models, TDD, RESTful architecture, etc. From Django, I’ve come up appreciate how documentations are done and wished other documentations were as good as Django. From CodeIgniter, I enjoyed their light-framework approach and how they handled a lot of the MVC structures in a simple concise way. Learning these additional languages and frameworks strengthened my foundation as a developer and reinforced the fundamental concepts of programming in a way that would have been impossible had I just stuck with one programming language in my career. It also made me more adaptable and open for new ideas and trying new approaches.
Third, you don’t know which programming language will fit your style until you’ve learned a few
Programming language is really interesting and based on personal preference, one is usually attracted more toward one style of language than others. The tricky thing is that most people won’t know which fits their style more until they’ve tried learning a few on their own first. This also depends on the frameworks and tools available for each programming language also. When you’re new to coding, as you’re still formulating which area you want to go into and what type of application you want to build, it’s hard to pick the programming language you want to focus on, until you’ve tried out a few and really have seen the pros/cons of each language/framework and how their approach differs from each other.
Going back to the question: “Which is better? Knowing one programming language really well or know several?”, my argument is that the best option is to do both. One inevitably needs to pick a language/framework they decide to become experts in but knowing a few other languages/programming frameworks strengthens your foundations as a developer and frankly makes you a better developer with stronger fundamentals and frankly with more edge than a developer who’s only comfortable with one language/framework. As the world is evolving so quickly and so many new tools/libraries/frameworks are being introduced all the time, it’s becoming even more important for the developers to stay flexible and always willing to learn new things and adapt.
We hope you found the article helpful. If you have some additional comments, please share your thoughts below!
Other articles you may be interested in reading: