More is usually better, right? More cookies, is noticeably better than less cookies. Unless those cookies are bad. In which case, nobody wants those extra cookies.
Programming is much the same. Learning more than 1 programming language, is theoretically great. Learn them all. Like the back of your hand, and you will be a hugely valuable asset to both yourself and to any team. And that's the key. Learn them all well. And that means going beyond knowing how to set up 'Hello World' sample projects over and over again. Real life doesn't work like that. Real life involves servers, databases and networks. And files. Thousands upon thousands of files. All working together with other files from different systems, and somehow not melting the computer in the process.
The languages might vary a little or alot in syntax depending on the syntax rules that were chosen when creating them. For example, the following for loops all do the exact same thing.
for(var i = 0; i < 10; i++)
for(var i = 0; i < 10; i++)
for x in range(10):
Knowing that syntax, does not equate to knowing how to program in said
language. That's an important distinction. As many people believe that
it is synonymous. It is not. If, let's say, a new employee went ahead
and accidentally deleted your database, would it be possible for them to
bring it back up and to do it in a timely manner. And if your answer to
that questions is "while loop?". Then no, they are not ready to say that they know the language just yet.
Most apps are written in one language
Some application use multiple languages, sure. But those were created by accident, I assure you. Usually due to multiple teams having their hands in the cookie dough, as it were. Most web applications run under a single server with a single selected programming language. For simplicity sake. Parts of an app, might be built using other languages, usually things that are added later on in the life cycle. But most applications themselves at their core run off a single language. This blog for example isn't running in C#, PHP and Python, all at once. For one, I'd have to heavily configure the server to allow for all of those. Secondly, it would serve no purpose for me to do so.
And again, if I were build various different modules around this blog using different programming language, it would make things a bit harder to manage as they would require different libraries and frameworks and again, different server configurations. And that's a part that many people miss. The programming language itself isn't the challenge. It's everything else around it. The things that make the language function.
For larger applications, such as those that corporations run on a daily basis, this can equate to having to hire more developers with varying skillsets, which can get expensive in the long run.
Master of none
The second biggest issue with people that attempt to learn multiple programming languages, is that they don't get to spend enough time with any one language in order to really make a dent with the more complex elements. A big part of learning a programming language, is learning the small subtle things that normally aren't outright clear. For example, connecting to a database or handling issues with the file system. Almost every programming language has some form of database connectivity set of classes. And with these classes, various functions. And with these functions, several rule sets that make the whole thing work. It takes a substantial amount of time to figure out how these mechanisms work, and to figure them out well enough to provide some form of value to a project and/or company.
Again, reality is always a little different than the colorful picture that we think it is. In reality, things are installed on a web server that will break other things. Configurations need to be managed and software needs to be updated. And each time that happens, there is potential for things to go awry and for you to fix them. A programming language is more than just the syntax that you type and get right or wrong. It is a part of a much larger package as I mentioned above.
Keeping up with changes
This is the part that most programmer's tend to ignore usually. But programming languages change. Alot. New standards are decided upon yearly by the entities in charge of those languages, sometimes even faster and things that were once useful, can be deprecated the very next moment. And any good programmer should make some attempt to keep up with these changes, to the best of their abilities.
This one is personally relevant to me as I am a C# developer. These new updates to the language are both helpful and somewhat complex. You would need to have a fairly good understanding of the overall language and framework to know whether they are useful or not. And this is true for most languages that are in a stable version.
Picking your primary programming language is a somewhat personal endeavor, and can dictate much of how you live your life going forward. And that sounds a bit extreme, but that's because it is. Your primary language will determine where you can work, what you can work on, and to some extent what you will get paid in the long run.
A big part of doing well in any venture is to have clear and concise goals. If you scatter your mind with multiple programming languages, each requiring their own software, configuration, OS and hardware, then that's exactly what you are going to get out of it. Fragmented bits of information and higher levels of overall stress. What makes programming fun and enjoyable really comes down to having good command of the language. The more knowledge you have, the easier it is to accomplish something. The least knowledge you have, the more you are going to struggle to get to your destination.
I've said many times that you should let the programming language choose you, based on where you currently are and what you are currently in the process of doing. If your job requires you to know PHP, then learn PHP. If you are in a coding bootcamp learning MongoDB and React, then learn those technologies. I learned C++ in college, as I prepared myself to work on mainframes and embedded systems, but my first job was to code in X++, the proprietary language of Axapta (now Microsoft Dynamics). Which later turned into a C# web developer project that essentially guided the remainder of my career. I didn't choose most of that. I sort of went along with it and learned along the way. I don't know C++ that well anymore as I haven't kept up with it, and I surely have forgotten most of the X++ language. But I know C#. I know it very well and I enjoy it thoroughly.
So in the new year, I wish that your language find you. And that it take you places in both your career and in your personal life.
Walter G. is a software engineer, startup co-founder, former CTO of several tech companies and currently teaches programming for a coding bootcamp. He has been blogging for the past 5 years and is an avid BMX rider, bio-hacker
and performance enthusiast.
Stay up to date with my weekly coding tips!