Elite software development.

Beware Programming Language Requirements On Job Postings

Employer! Consider loosening the programming language requirements on your software development job posting. Learning a programming language is easy. Good software development is hard. If you are an employer or a human resources professional hiring software developers, you need to read this article.

Are you asking for an experienced Java developer to accelerate your firewall/networking app? Instead of soliciting an experienced Java developer, perhaps you should solicit a software developer who understands networking protocols. Why? Because learning to program in Java is easier than solving the problems you will encounter when coding your new networking app.

Employee! You need to reconsider working for an employer that does not understand that proficiency in one programming language does not necessarily make for a good software developer. You might find your coworkers incompetent.

The majority of the difficulty in a programming task comes from the fundamental problem being solved. The programming language in which the solution is expressed will not likely affect the quality of the solution. (Though, it may affect the development time.)

Many employers fail to realize this. Or, perhaps it is the human resources staff in charge of the hiring that does not understand. In either case, employers are losing skilled potential employees to this simple phrase placed in an employment description:

n years experience with Blub

where 'n' is an integer, like 3, and 'Blub' is some popular programming language. (See Paul Graham's "Beating the Averages" essay for the etymology of 'Blub', and for further insight on programming language power.)

Employers need to understand that, the more experienced a software developer they are seeking, the fewer specific programming language requirements there should be. Experienced software developers should know a variety of programming languages.

Employees need to understand that employers who fail to understand the above may be lousy employers. Beware!

One blogger, Steve Yegge, points out that some candidates who do have the programming language experience for which an employer asks may not be best for the job. They may be one-trick ponies who

only know one trick. Candidates who have programmed mostly in a single language (e.g. C/C++), platform (e.g. AIX) or framework (e.g. J2EE) usually have major, gaping holes in their skills lineup."

Help for the Employer

Here is a recommendation about how to rephrase some programming job requirements, so as to attract a better quality employee. I discuss the reason for each change, following.

Bad idea Better idea
  • 3+ years experience developing ASP.Net applications
  • Extensive knowledge of ASP.Net web-based development
  • Extensive knowledge of VB.Net and/or C#
  • Extensive knowledge of Microsoft SQL Server
  • Good knowledge of web servers, application servers (Tomcat or WebLogic), SOAP, WebServices, Internet security, messaging and XML
  • Experience designing and/or implementing large-scale Internet architectures, using standard-based web technologies such as XML, J2EE and .NET
  • Extensive knowledge of web software development practices
  • Experience with Microsoft .Net platform a plus
  • Expertise with RDMS's like SQL Server
  • Experience implementing large-scale Internet architectures
  • Knowledge of standards-based web technologies such as XML, SOAP
"3+ years experience developing ASP.Net applications"
"Extensive knowledge of ASP.Net Web-Based Development."
"Extensive knowledge of VB.Net and/or C#"
These three requirements reveal what projects the developer is to work on: web app development with .Net. The third requirement suggests that the employer doesn't really care what language is required ("VB.Net and/or C#"). So, that is what the improved job posting asks for: "Extensive knowledge of web app development" and ".Net platform experience a plus". These requirements are much more inclusive, and are clear about the real skills involved. No programming language is mentioned, though developers with ".Net platform experience" will surely have used one of VB.Net or C#.
"Extensive knowledge of Microsoft SQL Server"
Okay, we get it, the employer is a Microsoft shop. Is it really looking for a specialist in SQL Server, or just someone who can proficiently manage tasks associated with the object-relational mapping chore in a web app. Probably, the latter. We change this requirement to the more inclusive "expertise with RDMS's like SQL Server", which suggests the employer's preference of RDMS.
"Good knowledge of web servers, application servers (Tomcat or WebLogic), SOAP, WebServices, Internet security, messaging and XML"
This is totally redundant. Any developer who has "extensive knowledge of web app development" will satisfy this requirement. Though, leaving it as a requirement would not be terribly harmful. The SOAP requirement is moved below.
"Experience designing and/or implementing large-scale Internet architectures using standard-based web technologies such as XML, J2EE and .NET"
This is really more than one requirement. Let's split it into two. First, employers should change "designing and/or implementing" to simply "implementing". An employer shouldn't want any developer who only talked about an implementation. "Designing" might be interpreted that way. Employers should want in-the-trenches developers. The first new requirement is therefore "Experience implementing large-scale Internet architectures". Second, the use of standards-based web technologies should only mention XML. It is the only one which is an open standard. J2EE and .Net are actually outputs of large corporations (Sun and Microsoft, respectively), and should not be considered standards. The employer has already made clear the .Net experience requirement, and that suffices.

Further Reading

  • Five Essential Phone Screen Questions by Steve Yegge. Notice that he does not care much about the programming language used to answer questions.
  • Beating the Averages by Paul Graham. Paul points out that languages really are not all equivalent in power. Why hire an employee savvy only in wimpy langugages? If you are going to have a language requirement for your job posting, employers, at least ask for skill with a powerful language.

Not Skills But Problem Solving

Well written. I'd go one step further. Skill is often a term that is used in and around software development. "We need people with the right skills." I say baloney to skill in any particular area. If I was shingling roofs then I would like someone who has experience and skill in shingling roofs. What we need most of the time is ability to solve problems - not a particular kind of problem, not a problem using a particular language etc. Just to solve problems.

-- Senior Technical Staff Member, IBM

IBM Can Afford That

IBM can afford to hire the best problem solvers, whether they are skilled or not, precisely because it has the money to allow them to train themselves in whatever skills they need. Other software shops need developers who can hit the ground running, and begin producing code immediately. Those shops may sacrifice on developer quality in the long run, with this strategy.

Perhaps that is what this post should conclude: there is a trade-off between candidate skill specificity and candidate quality, in general.

One trick ponies?

Well...if you're talking about hiring for web development, then yes, I agree that specifying the language isn't really relevant. But, relatively speaking, web development is easy.

If you want, say, an embedded application developer who needs to know C, or a video game programmer who needs to be able to work with a C++-based library, then not only is the language request relevant, it's make-or-break.

I don't care how many servlets you've written in Java or games you've written in C# if I want you to be able to use a more "raw" language like C or C++. Some programmers never successfully make the transition to a lower level language, and I wouldn't want to take a chance on someone without the relevant experience. I forget who it was who said that C++ is a language not suited to beginners, but he was right--the learning curve is intense.

And as it turns out, I do know a C++-only programmer (well, he also knows ActionScript, but only because he was a developer at Adobe) who is wicked-smart and really good at just about any task he takes on. Steve Yegge said they MAY be one-trick ponies, not that they always are. And I'd be more likely to trust a C++ expert's ability to downshift to a hand-holding language like Java than the other way around. YMMV.

Consider how that job posting might look

It is true that some programmers fail to make the transition to a lower level language.

However, imagine how a posting for a job dealing with "raw" programming might look. It would likely require some prior experience programming "raw". That must have been done in some language, possibly assembly, or maybe Ada, if not C.

In any case, if the job applicant has successfully programmed raw before in some language, then it is likely that learning C, say, will not be difficult.