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.
3 comments ↓
Hi, I’m the autor of the linked post and I want to clarify some facts.
First, I never said that you have to know a language and then stuck with it the rest of your life, that’s not intelligent. I’m the first to defend the need of knowing several languages to broaden up your mind and to be more agile solving different kind of problems. I program in Python, C++, Java, Javascript and C. I’m in process of learning Haskell, so what you wrote is not exact.
Second, my blog Building up a Career is targeted to novice programmers that are searching for good advices on their very first steps in programming, that’s not an advice for someone who has programmed for even one or two years, I mean it’s for REAL novices.
Third, you must know me, really. I’m the most passionate developer you’ll ever find. I wake up every morning and think about the projects I’m on (investigation projects), I love what I do and I always aim higher than the day before.
That’s all, I hope all is clear now and. I love your blog, keep writing!
Ever heard the term “Jack of all trades, master of none”.
The linked author is saying instead of saying in a interview “Yeah, i played with it” you should be able to say, “yes, i know the language very well”. Lets face it, ADHD is not a good strategy for getting a job, and its not a good strategy for obtaining knowledge either.
@Joan - Thanks for dropping by and clearing up some those comments. I only looked at that particular post and not the rest of the website, so I wasn’t under the impression that the post (and the blog as a whole) was geared towards novices. I also didn’t mean to imply that you’re a “day-coder” or anything. I just wanted to say that the people who I know that stick to one language to try to “master” it (which more likely than not, they don’t for some reason) are normally those without any passion of learning new things. Just by having and maintaining a blog to help others (look at this blog post I wrote a few weeks back) I know you’re definitely passionate about what you do.
In any case, I think a bit of clarification on your part would’ve definitely helped before I wrote this
Thanks for reading and clarifying, and I hope you didn’t think I was bashing you or your blog.
@Tristan - I’ve heard that phrase, but I wasn’t trying to get that point across in this post I wrote. If you notice in the end, I wrote that once you have a firm grasp of a programming language (to the point where you’re confident saying “Yes, I know the language very well” in an interview), then you should learn something new. I didn’t mean learn something a little bit, then move on to the next. I tried that when I was starting out, and it didn’t work at all. However, your comment got me thinking, why would anyone apply for a job when they don’t have the knowledge of what’s required? For example, I’ve used Python for a bit now on my own time, but don’t consider myself to be ready for any job that requires a Python developer. Simply put, I’m not a Python developer now, so I wouldn’t even try to apply (unless they said that the job would train prospective employees to learn Python, but those generous types of jobs are few and far in between). I do get what you mean, but you probably misunderstood what I meant in my post.
Leave a Comment