Don't be proficient in just one programming language

I just read a post by Joan Planas Illas titled "Be proficient in one programming language". In this post, Joan gives some advice that developers should stick to one programming language, get really good at it, and make a career out of it. He does offer some good points, such as software development not being just about learning programming languages, and how employers actually prefer if a prospective employee is well-versed in the programming language they're looking for.

But for me, those who follow the advice of just mastering one programming language are usually day-coders: those who only think about software development from 9 to 5, nothing else. Don't get me wrong, I'm sure there are a lot of day-coders who are awesome at what they do. But usually these people don't have much passion for what they do. They're happy being in their own groove, not expanding their knowledge, and just do their job because it pays well and nothing more. These are probably the worst types of software developers any company can hire. No passion almost always leads to a sloppy job.

But the best software developers I've seen show an insatiable amount of curiosity to learn every single thing out there. Of course, it's not possible. While I don't have any sort of scientific proof to back me up on this claim, I'm fairly sure there's a direct correlation between how effective a programmer is with what they've learned. A person who reads and stays up to date with different programming languages will have a broader vision on how to get things done. A person who only knows one thing will most likely know only how to solve problems the way their language does. Sadly, a lot of programming languages have their own conventions on doing things their way, which sometimes isn't the right way to do. These bad habits are then embedded to the developers, who are unfortunately ignorant to recognize there are better ways of solving a problem.

I have yet to meet or read about a kick-ass or famous software developer (well, at least famous in my mind and geeks around the world) who is an expert with just one programming language. Martin Fowler didn't just stick with C. Yukihiro Matsumoto didn't stay with C++. Zed Shaw definitely didn't 'get married' with Ruby. These are just a few examples. But just think of any well-known software developer, and one common trait they'll have is that they at least have experimented with many programming languages, and I'm sure that helped them be as knowledgeable as they have been.

So if you have the time, get to know a programming language of your choosing, preferably one that interests you and not one that all the 'cool kids' are using so you need to learn it too. Once you get a firm grasp of that language - not master the language, there's a huge difference - take the time to learn a new one. For example, if you know Ruby pretty well, get into Python. They both are similar, yet have different ways of doing things. Just don't choose Ruby and stick with that for the rest of your life. You'll earn no real benefit at all, and when the next big thing comes along, you'll be get left behind. Unless you're happy with that, day-coder.