• Requiring a candidate to know a specific programming language is stupid. Nearly all of the commonly used languages in industry are similar.

    It’s maybe more valuable to require knowledge in a specific framework, where knowledge is less transferrable between popular frameworks. Nonetheless, I personally rather hire an engineer that solves problems and learns flexibly rather than one that happens to know the right tech.

    • It’s not a black and white issue. “Jack of all trades, master of none” vs “expert of one”. Both have their place and I think it’s better to have a mix than just one or the other.

      I’ve seen python newcomers writing code as if they were writing in another language. They don’t know about dataclasses, operator overrides, __init__ vs __new__, metaclasses, __init__.py vs __main__.py, @property, match, the walrus operator, or assignments, or the common pitfalls of python like mutable defaults, type hints, and a bunch of other things.
      Knowing a language in-depth helps write DRY code, avoiding common pitfalls, handling things better like debugging, profiling, and other tooling, and avoiding pitfalls of the language, which newcomers have to first learn, regardless of how their experience with other languages.

      A lot of stuff is transferable, for sure, but every language uses different idioms, covers different paradigms, and so on. It’s good to have at least one expert on the term to teach others, and to have people flexible enough to switch of willing to learn. Having only experts can mean a static team unwilling to experiment or use better programming languages or technologies. Having only beginners or mediors of a language can produce functional, but sub-optimal code. YMMV

      CC BY-NC-SA 4.0

    • I used to agree, but now I’m not so sure. There are huge time savings in having someone already familiar with a specific technology. They’ve ran across an issue before and can quickly find the solution.

      For example, I started learning Elixir a little over a year ago. I struggled with how to get it to change data in place, and the answer is that you don’t. You work with data in an immutable way; you make a copy with the change made and throw away the original. Once you get used to it, this works very nicely, and Elixir has quickly become one of my favorite languages. However, few other languages force you to work immutably, and nobody does it voluntarily. It takes a bit to get your head around it, and you’ll take a lot longer on any given task until you do.

    • I generally agree with this, there’s specific circumstances but for the most part its true.

      I went from a C# position to PHP, to Python, to perl all with little or no experience with what I was jumping in to. There’s different nuances and the syntax might take a bit to get used to but as long as someone understands the how and why of what their code is doing that can be pretty easily transfer to most other languages. It’s all about the fundamentals.

    • It is better to find a developer that has experience with the language features you use rather than one that is experienced in the exact language you use. For example, I work on distributed systems in Java/GoLang/Python. We want candidates that understand how to write concurrent logic and stay away from people who are just Java web developers.

      The big issue is doing a coding interview with candidates. We have a standard straightforward problem that candidates need to solve by filling in a stubbed out method. We have it in Java and have ported it to GoLang. If we have to interview a candidate who does not know either of those languages, we would need to find a language that the candidate knows and we know well enough to port the problem to. We would also have some difficulty digging in to design specifics like choice of concurrency primitives.