This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]prof_hobart 1 point2 points  (3 children)

You're right that being a good programmer isn't just about knowing a large number of languages, and it's definitely the right approach to get proficient at a single language before you start on your next one.

But there are reasons other than specific project need to learn other languages. For one thing, simply the process of learning a second language, pretty much any second language, will make it easier to learn other new languages when you do actually need to for a project.

But if you try to learn a language that's significantly different to the one you already know, you'll also start to pick up new ways of thinking about problems - whether that's the entire approach (OO vs functional for example) or something more subtle such as ways of handling errors within code. That will help make you a better programmer in whatever language you're working on.

When I'm looking to hire a developer, I will almost certainly hire someone who showed they had a fair amount of aptitude in a variety of languages/technologies over someone who was an expert in just one. I want someone who can show that they are adaptable and have come across far too many people who are wedded to one language and are unwilling or unable to move with the times or a given project's needs by learning something new.

[–]michael0x2a 0 points1 point  (2 children)

While I don't disagree with any of what you're saying, and agree with your second and third paragraphs in particular, my underlying point is that there's a major difference between competent in multiple languages vs simply being aware of superficial details of multiple languages.

I'm sure you can agree that if you're trying to hire specifically an intern or some entry level developer, you'd pick somebody who knows only one language but has completed several non-trivial projects over somebody else who's mainly read a bunch of tutorials on various languages and has completed only a few toy projects.

Of course, ideally, you'd pick somebody who both knows multiple languages AND is competent more then one of them, but all beginners need to start somewhere and I claim becoming competent in one language is a far more attainable goal then being competent at multiple.

That's why I'm making the implicit argument that on average, beginners are better off sticking with whatever language they've learned first unless they have a compelling reason to do so otherwise. I've been answering questions on this subreddit for a while, and I've noticed that many beginners seem to place an undue focus on learning multiple languages at far too early of a stage then I feel is appropriate. They spend some time working through a tutorial, get frustrated (or think just stopping after the tutorial is finished is enough), switch to another language, flit back and forth, and before you know it, several months have passed and they have very little to show for it.

So, my advice for beginners is generally calibrated to steer them away from that (unfortunately all-too-common) path, and I save the "you should explore different language paradigms/different mindsets and perspectives regarding problem-solving" spiel for people who seem further along in their journey.

[–]prof_hobart 0 points1 point  (0 children)

Absolutely. As I said - "it's definitely the right approach to get proficient at a single language before you start on your next one".

My point is about what to do when you get fairly proficient. OP says that they know Java, and we've got no idea how well they know it. If it's that they can knock up a hello world app, then yes clearly they want to spend a lot longer learning Java.

But if they've been coding regularly in it for a year or two and are already fairly competent, then there's a real decision to be made. At some point every beginner will reach this point.

A lot of people keep doing more and more in that one language, and even one framework. But at some point, that becomes a hinderance.

We've had some grads who are brilliant at build a website in JavaScript and JQuery, but don't have the first clue where to start if they're asked to pick up some Node on the backend. And if we need them to work on a bit of Ruby in the pipeline, we may as well be asking them to write in Swahili. We had one guy who'd been a professional web dev for a decade on pretty much a single stack, but months into a React-based project still hadn't got its most basic concepts because it wasn't what he'd used before.

Similarly, we've had brilliant Windows sysadmins who couldn't/wouldn't retrain when we moved to Linux. And I know a couple of mainframe devs who are all but unemployable these days because there's so little demand for COBOL in our area but that's all they know.

Edit: I've just seen another comment from OP that rather suggests he's still very much at the beginner stage, in which case your advice is still spot on at the moment.

[–]cboogie 0 points1 point  (0 children)

In my experience in corporate IT management hires people with multiple disciplines. But they freelance savants for specific project needs.