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#"
- 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.
- 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.