Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In an ideal world:

In an excellent article Don't Call Yourself A Programmer, And Other Career Advice, Patrick McKenzie explains, among other things, that language doesn't matter:

  • A developer is a person who solves problems, in general. A developer is not a person who writes code in a specific language.

  • Businesses don't care about the languages you know. If they need to hire a developer for a project written in a specific language, and they have a candidate who is highly experienced but never wrote a line of code in this language, he would still be hired.

According to my experience both as a developer and as a person who had to hire other developers, the observation is very similar:

  • The N years experience in Java or N years experience in C# doesn't matter. What matters is that the candidate knows how to solve problems, knows the difference between spaghetti code and clean code with well-thought architecture, etc.

  • I don't care about the languages you used before. For a C# project, I'll rather hire a professional developer who spent his life writing Java, Python and Ruby on Rails code rather than a beginner who knows only C#, and knows it badly.

  • The knowledge and the experience you gain using one language is mostly reusable in any other language.

    An experienced developer who used Ruby on Rails for web development and spent the rest of his career writing Java desktop applications using Oracle fits perfectly well for an ASP.NET MVC project using Microsoft SQL Server. Because this person already knows everything she need for this job, aside a few specific things and syntax differences.

    On the other hand, a person who have done just a few ASP.NET MVC small websites doesn't fit at all, because she may not completely understand the MVC architecture, may know know what is SQL profiling, and may lack some other essential knowledge.

    Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before.

In practice:

In practice, when I search for freelance jobs and when I see the job offerings in general, they are very language-specific.

Some would search for a PHP developer with two years experience in Magento. Others will be searching for a person with VB.NET experience of at least three years, and if you send them a resumé mentioning that you've done C# development for six years, but with no mention of VB.NET, they will not bother to answer. If they ask for a person with an experience with Firebird, they will not listen about your ten years experience with Oracle.

Why there is such difference between the theory and what Patrick McKenzie and I describe as being common sense, and the real world of job offerings?

share|improve this question

closed as not constructive by Jarrod Roberson, ChrisF May 27 '12 at 20:33

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

12  
Don't tell me that I'm unable to fix a small problem with a PHP website which uses CodeIgniter just because I never used CodeIgniter before. While you are perfectly capable of fixing the problem, if the root cause is CodeIgniter (one of the framework's few quirks, or one of its many open bugs), then it will take you considerably more time to fix the problem. –  Yannis Rizos May 27 '12 at 14:16
12  
You forgot some tags: <rant>...</rant>. Seriously, is there a real question here? –  Cyclops May 27 '12 at 14:20
6  
"I don't care about the languages you used before. For a C# project, I'll rather hire a professional developer who spent his life writing Java, Python and Ruby on Rails code rather than a beginner who knows only C#, and knows it badly." - Take that strawman! This is a false dichotomy. Your rant is correct for beginners, but NOT for positions that require deep knowledge of a particular platform. –  Jim In Texas May 27 '12 at 17:44
    
Someone who has experience in a language is going to do the job much more quickly and much more cleanly, thinking otherwise is just delusional. –  Andreas Bonini May 27 '12 at 17:55
    
When I'm the person hiring, I get to be the one with a really long list of "Must have used Technobabble Terms X,Y, and Z". And if I can find that person, I can hire them. When I'm the person looking for a job, I might resent them for not looking at me because I only have oodles of brains, and not the exact experience they want, but if I had the exact thing they want, I'd expect to get hired, on the spot. So in the end, it's their call, and that's as it should be. –  Warren P May 27 '12 at 18:07

8 Answers 8

up vote 14 down vote accepted

Because many companies have HR drones do the recruiting who have no idea about any of it. When HR says "What qualifications does the candidate need?" it's a lot easier to say "Six years C#" than to say "Writes good code". That drone has no idea what "Writes good code" looks like or how to filter a resume by whether or not they can write good code. They can, however, quickly read a resume and see "Five and three quarter years C#" and throw it away.

share|improve this answer
3  
Exactly. non-developers and management may look at you askew if you say you're looking for someone with similar skills but would need to learn a fair bit (e.g. specific syntax, not concepts) initially on the job unless they're ok with that. –  Michael Durrant May 27 '12 at 15:05
    
I thought they were called HR monkeys... I totally agree, yet it's a good idea to have <language here> guru on the team. –  lukas May 27 '12 at 16:51
3  
Putting "writes good code" in the ad is complete nonsense. Everybody thinks they write good code. And the ones most convicted of their superior code-writing skills are usually the ones that write the worst code. –  nikie May 27 '12 at 19:04
1  
@nikie: It's a simplification. You would, of course, not put exactly that in the advert. –  DeadMG May 27 '12 at 19:04
2  
I don't think this is the main reason, as small startups without an HR department do exactly the same. –  J. Maes May 28 '12 at 7:55

I think it is time to put to bed this myth that a developer with X years experience in language Y can seamlessly transfer to language Y2. This is not how it works.

If you treat the language as just its syntax and common patterns then knowing, say, Java will give you a huge head start when moving to C#. It will not however prepare you for WCF, WPF, Click Once, the various threading libraries, Linq, and it certainly won't prepare you for the things that the brochure says work, but in practice don't.

You see you are not talking about a language, you are generally talking about a platform. And where the platform, .NET is a good example, supports many languages, people tend to converge on a preferred choice.

So when I ask for a C# developer, I'm actually advertising for a .NET platform developer who's experience lies in C# projects. Those tend to be .net server projects, winforms/wpf projects.

share|improve this answer
    
I agree. It's of course possible, but difficult. C family syntax easily transfers, but real understanding of the full platform and tool set take a lot time to grok. My advice to younger developer/programmers/analysts/coders is to jump on new technologies on your own time while everyone is still a beginner. The people who dove into HTML5, iOS and Android development two or three years ago are in good shape now. Of course, it's possible to guess wrong (ask me about Flex), but its not the end of the world. –  Jim In Texas May 27 '12 at 18:00
    
This is mostly because Java -> C# is similar to C -> C++- they may be built on the same foundations, technically, but C# includes way more features that you would actually want to use. The inverse transformation would be vastly easier, going from C# to Java. –  DeadMG May 27 '12 at 23:15

I can think of a few reasons:

  1. Employee vs consultant - If I'm hiring a consultant, I want him/her to be up to speed already on the technology stack we are using. Consultants are expected to be efficient very quickly since they aren't around as long to amortize learning.
  2. Supply/demand - As Doc said, if I'm going to pick the most experienced candidate I can for the job. And technology stack does matter there for established technologies. If I'm looking for a person to develop in Go (picking a language few people know), almost nobody has experience with it and I'm back to skillset as a developer in general.
share|improve this answer

Not all programming jobs are the same. My current job certainly fits in your model. It involves a lot of ad hoc data analysis and we pick up and put down tools as needed. I was hired in part because I had a track record of being able to quickly become productive with new tools.

On the other hand there are jobs where you are looking for specific technical expertise. Back in the 90s I was working for a small software shop, and we needed to quickly develop expertise in C++. Despite explicitly asking for expertise in C++ in our ads, most of the applicants knew less C++ than I did. "But I can learn C++ quickly!" they all said. Well yeah, I'm sure you could, but so could I, and so could the other folks already there. We were looking for somebody who already really knew C++, so we'd have an in-house source of expertise as the rest of us came up to speed. Having another beginner on the team really wouldn't have helped.

share|improve this answer
    
+1: A TEAM can have some or even most of the developers be new to the language, but it helps a lot to have language experts who can teach everyone else. –  TREE May 28 '12 at 14:13

Businesses don't care about the languages you know. If they need to hire a developer for a > project written in a specific language, and they have a candidate who is highly experienced > but never wrote a line of code in this language, he would still be hired.

Say, you are looking for a candidate for a .NET/C# job. If you have two candidates for the job, both seem to be equally highly experienced, but the first one has gotten his experience in the Java ecosystem, the second one in the .NET ecosystem - which one is your favorite?

Others will be searching for a person with VB.NET experience of at least three years, and if you send them a resumé mentioning that you've done C# development for six years, but with no mention of VB.NET, they will not bother to answer.

Who can say why you don't get an answer? Perhaps there were enough experienced VB.NET devs applying for the job? Perhaps the human resource department uses the programming language experience as a filter to reduce the number of job applications from 100 down to 10. Perhaps you have just talked to the wrong companies (I guess in my company we would send an answer in the example case you described above).

share|improve this answer

In most project based work results are needed quickly and people need to generate profits as soon as possible.

People that are able to deliver these needs and are not bound to a specific language(s) are scarce and by consequence too expensive. These people only get hired by the big companies that ask for incredible skills.

People that are able to solve the problem but cannot learn a specific language fast are less scarce. They still cost a lot of money, and they have an extra cost of time needed to learn the specific language.

This extra cost of time is reduced by asking for a language specific programmer. He has already learned the required skills and can deliver results quickly.

In short, a project that needs to be done in JAVA doesn't need an expensive incredible software developer, nor does it need an average .net developer that will need time to learn the language/framework. It needs immediate results for the least amount of money, which is delivered by the guy who already has experience with JAVA and has relatively good problem solving skills.

As always, it's about money, and getting the most return on investment

share|improve this answer

Step back and think about the premise. You want a person do some some .net work. You put that in your job description and you look for candidates with that skill! This is just common sense.

I certainly agree with your more detailed philosophies about why that might not be a good idea, but most people will just advertise, require and look for a candidate with the skills they need now. It's just that simple so I think this answers the title of your question as to why.

If they can't get any candidates at all , or go through several bad ones, then they might study up a little and be more amenable to the items you detail. In fact in the area that I'm in (Ruby on Rails) there are a LOT of ads right now saying "no experience required, we'll train you", etc. and in fact some of the top Ruby on Rails organizations are very open to candidates "without bad habits" that they can train up. So the right approach is out there by some organizations.

Bear in mind too that most ads are by external recruiters or non-technical internal recruiters who just don't have the knowledge to "go sidewards" as you describe.

share|improve this answer

I think you're simply misinterpreting the standard phrase "<language here> developer". Companies don't put that phrase in the ad to deter developers who have experience in some other language. Why would they want to deter capable developers? From the employer's point of view, the more candidates, the better. They can always not invite people they're not interested in.

The real point of the phrase is to tell you, the reader, what the job offer would entail. And that makes a lot of sense, IMHO. Would you apply for a job where you develop in Z80-assembly language? Or COBOL? Or Fortran?

And, obviously, if the company has two candidates who seem equally smart otherwise, then the one with experience in <language here> wins. Nothing more, nothing less. (There are special cases, where people are hired for a single project only, or for a project that's already late, or for the first project the company develops in <language here>, where you really need experience in that language from the start, but I don't think they're the rule.

Incidentally, my company once wrote ads like you suggested (it seems like it makes sense, after all). The results were devastating. People who really care about their work simply skipped the ad. Only the desperate, who apply to any open position applied. We never tried it again.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.