Hacker News new | ask | show | jobs
by BinaryIdiot 3748 days ago
Are there people out there who only want to work in one language or be hired explicitly for one language? On the other side are there employers who only want people well versed in X language?

I guess what I'm getting at is: most great developers I've met choose and use whatever language is the best fit for the job, even if it isn't their favorite. Targeting a specific language appears to be more of a niche, to me, and not as forward-thinking (what if, in order to scale, a different language is more appropriate and you hired only Python experts?). So how typical is it for people to go through either side of this type of process when you're targeting for a very, very specific type of knowledge ?

Curious mostly; not trying to simply be contrarian.

10 comments

Yes and yes and it's perfectly fine in my opinion.

It seems to me that programming language count is overvalued in online discussions on e.g. HN or reddit. The argument is that each extra programming language makes one a better programmer and it's one's duty to learn as many as possible.

However, this is not realistic:

* becoming fluent is a language means knowing the style, idioms, libraries and ecosystem and very importantly delivering software created with that language. It will take years to reach this level (see Norvig's essay about learning a programming language in 10 years).

* knowledge has a half-life: not using a language means that your knowledge will slowly become obsolete, one will forget library usage patterns, etc. This can happen very fast for e.g Javascript or slowly for e.g: C.

* a programming language is a very complex tool and it's really hard to be and remain fluent in (my estimate) more than three languages at the same time. As an example, I've already forgotten a lot of Java and a lot of Android in less than 9 months - I can ramp up pretty fast, a few weeks, but I won't be anywhere near the level of productivity of a full-time Java dev. I have the feeling that most devs that know many languages know them well enough, not inside out.

* learning languages will take away time that can be better spent learning other important topics such as architecture, people skills, domain-specific topics, etc.

Finally there's personal preference. Some people like X, have specialised in it and would like to use it as much as possible. Why shouldn't they? If you invest years of your life in something, you don't switch unless you have a good reason.

As long as one is successful using this strategy, I don't see anything wrong. Software engineering isn't supposed to be a fashion show - we should use what works and switch only when there's a need.

I don't necessarily only want to work in only one language, but I certainly enjoy working in some languages more than others. That being the case, all else being equal, between two jobs I would choose the one with the language I prefer.

It's kind of like.. employee benefits I guess? If I am going to have to spend most of my life programming I'd rather do it in a less painful way.

>what if, in order to scale, a different language is more appropriate and you hired only Python experts?

I don't think this is really an issue. Just because someone is a Python expert doesn't imply that the person doesn't know its good and bad parts. If anything they might understand the limitations even better and know when it's time to switch.

Fair enough

> I don't think this is really an issue. Just because someone is a Python expert doesn't imply that the person doesn't know its good and bad parts. If anything they might understand the limitations even better and know when it's time to switch.

While I completely agree with you, in theory, I've never actually experienced this. My anecdotal experience with people who tend to become experts with a specific language has almost always been them trying to force it for every single use case.

I'm hoping my personal experience is less indicative of the industry in general but I really have no data to go off of beyond it.

My experience shows that good developers are usually (always?) open for discussion, no matter how many languages they consider themselves to know well. Needless to say, these people aren't nearly as many as we want them to be…
The problem is unless you have some offband connections or doing your own startup it's very difficult to switch languages as a professional. For example, if I wanted to switch to Rails development I'd have no chance getting a job which asks for 5 years experience with Rails - I'd have to take a junior/intern position which would be a huge salary hit.

So regardless whether I could learn Rails in a reasonable time or not, I remain stuck in my pigeon-hole (exception is if a new tech comes along like Elixir, where you have a chance at getting in the ground floor).

You can keep telling yourself that, but actually most places asking for only five years' Ruby experience would kill for somebody with the same experience in a similar language. Rails really isn't that hard to learn, especially if you're taking a job that involves maintaining/enhancing an existing project. You would be hired as a senior. Well, unless you actually can't grok Ruby after knowing Python, which would be a sad state of affairs.
> most places asking for only five years' Ruby experience would kill for somebody with the same experience in a similar language

I've yet to see any evidence that is the case (not necessarily Ruby, but in general)

with some diversity, if the job lets you explore new tools, you wouldn't end up in that dilemma to begin with.
I probably wouldn't want to hire an employee that only wants to work in one language, but I can definitely see a case where I'd want to hire a contractor that only works in Python.

Also, if my entire codebase is in Python, it might make sense to at least target someone who shows a preference for working in Python.

Where I'm at right now in my career, I'd like to work on Python, but I don't. I don't want to do .Net anymore but I do.
i don't necessarily want to limit myself to one language, but i want to be damn sure which language i'll be grilled on during the interview gauntlet, and prepare accordingly. personally, i can typically only be technical-interview-good in 1 or 2 languages at a time max.
Think about it this way: The people hiring are looking for people with relevant experience. People with python experience can then leverage that and get a job. If you look at the postings most list other languages and technologies as well because no software is an island.
I thought the same thing. Even if I was at a Python shop, I wouldn't want to hire people who only wanted to work in Python. Seems like an inflexible mindset.
My previous job was Python code written in the style of Java. I agree that its good to have experience in a number of languages, but there is also benefit to having one that you know deeply and can write good idiomatic code for.
Knowing more than one language is not very typical?

Unless you have been involved as a software dev for 20+ years, if you have on your resume that you know perl,javascript, python, and java...that normally just means you know them very poorly and can only work with them by cuttingand pasting code from google searches... This has just been my general experience (with myself actually...)

So, IMO, it is perfectly fine to target one language. If your entire stack is in python, why would you want to onboard a senior Java dev and then spend the next year training him how to use flask, sqlalchemy, django, jquery, ect? Each one of those takes a couple of months to get fluid at...

Yet there are people out there capable of learning more than one technology deeply in a short time, and you'd be doing yourself and your employer a disservice to write them off as charlatans.
But how many are they ? And can you afford them ? And do you really need a unicorn for this simple job ?
Yes. I've worked with a handful of career Python developers, and they're even worse than career Java developers (at least the Java stack tends to be deep and sophisticated, demanding some expertise). They are practically useless when you depart the world of WSGI and new-style vs. old-style classes. At this point, people like that are an automatic thumbs-down during an interview for me.

Why is that? Think about it: How many jobs have you ever worked where you only had to know one language, or one stack? What sort of person would desire to work on the same stack, job after job? Who wouldn't have the curiosity or professionalism to branch into other areas on the job? I've never in my career encountered a full Python stack. There's at minimum some combination of C, C++, SQL, or JavaScript.

I believe there are two kinds of developers: Those who try to fit the world of software into their own mental model, and those who try to learn the model of the world of software. The former cling to the first technologies with which they achieved proficiency. The latter feel the urge to expand their horizons, so that they can better understand their early learnings in the larger context of computing, a pursuit that hones all software development skills.

Who do you want to work with?

When I was starting out, I'll admit I looked up to career Pythonistas in awe. One day I thought I'd get there, but never did. I have a favourite language that I know best, but I'm totally agnostic.

I look forward to my development career being summarised as a series of different favourite languages/ecosystems as I explore and progress.