There’s an old beef in this industry regarding hiring practices — specifically, unreasonable requirements in job adverts. Back when I was fresh out of college I learned to just move along if the job ad contained a screwy writeup, an unclear picture of the job responsibilities, or (especially) a requirements section that made it sound as if they’d settle for no less than Linus Torvalds himself.
Not having been in the job hunt myself lo these past few years, I’d more-or-less forgotten about the chicanery prevalent in tech-industry hiring practices. But as two colleagues of mine have recently gone through a job change, I’ve been getting a glimpse of current job ads, and if anything, it’s gotten worse. Granted, not in absolute terms. I remember job hunting back in the immediate aftermath of the dot-com bust. Employers were asking for the moon back then.
But today, while the ads aren’t quite as nutty as they were say, circa 2003, there’s far less excuse. Conventional wisdom holds that (a) a whole lotta incompetent chowderheads got into this industry during the boom and (b) the bust, if nothing else, weeded them out. Eventually. We’ve had several years of sink or swim, dog-eat-dog competition for jobs, and the devil has taken the hindmost. Right? And that should go for HR people as well. I mean, engineers have this bias against HR people in general, but I have to say that most of the HR people I’ve worked with pretty much had their act together. (There was this one really really stinker-oo exception to this, but I’ll not name names.) Maybe the HR biz hasn’t shaken out all the deadwood yet, or maybe it’s upper management making goofy decisions, or maybe we, collectively, as an industry, still have our heads in the clouds. All I know for certain is that requirements lists like the following still exist:
* A minimum 10 years of software development experience, at least half of which has involved direct Java/J2EE web or internet projects.
* Strong knowledge of development methodologies and how they can be applied to the organization.
* Firm understanding of project plans, estimates, milestones, and the overall software development lifecycle.
* Firm understanding of security issues as it applies to web applications.
* Strong experience designing database schemas for applications, and analyzing database specific issues. PL/SQL programming a plus.
* Very clear verbal ability in describing technical issues in both non-technical and technical language, depending on the audience at hand.
* Strong trouble-shooting ability in resolving tough technical problems.
* Intimate knowledge in how web servers, application servers, and database servers work together.
* Strong experience in Java, C/C++ and Perl development.
* Firm understanding and hands on experience with diverse technologies such as XML, SOAP, HTTP, JDBC, JNDI, JMS, JMX and JTA.
* Familiarity with Struts, JSF, Tapestry, Spring, Hibernate, Axis, JDO, and WebWork.
* Experience installing, configuring and deploying applications in WebLogic, WebSphere, and/or JBoss.
* Experience installing and configuring Apache Web Servers.
* Experience with unit testing.
* Comprehensive knowledge of Quality Assurance and how it fits into the development process.
* Proficiency in drawing system diagrams of large, multi-tier web applications from front to back, including networked and clustered components.
* Expertise in UML and recognizing which elements are applicable for a given project.
Sorry, guys, but your candidate doesn’t exist. Just some of the middle-of-the-list throwaways like “Strong experience in Java, C/C++ and Perl development” alone are absurd to ask for, leastways for any reasonable definition of the phrase “strong experience”. I’m quite experienced with Java, and I’ll go out on a limb here and say that I cut quite the dashing figure with C++ five years ago; I’ve not used it since. Does this make me “strong” in C++ nowadays? Hell no. Same applies for you, too. I don’t care who you are, if you’ve not used C++ in five years you’re no longer an expert. I do not know, nor have I ever met, anyone, anywhere at any time, who has even given me the impression that they are concurrently “strong” in Java, C++, and Perl. As a friend of mine put it, “Being ‘strong’ in a tech skill is akin to being ‘strong’ in an athletic pursuit. You cannot be an olympic level swimmer, boxer, and weightlifter all at the same time.”
Add to that other demands like “Firm understanding and hands on experience with diverse technologies such as XML, SOAP, HTTP, JDBC, JNDI, JMS, JMX and JTA” and “Familiarity with Struts, JSF, Tapestry, Spring, Hibernate, Axis, JDO, and WebWork” and you’re in cloud cuckoo land, if “firm understanding” and “familiarity” have any meaning at all. Top it off with the rest of the above list and you’ve weeded out… yep, 164% of the population. I don’t know how, exactly, but the numbers don’t lie. And keep in mind, as the posting makes clear: these are minimum qualifications. To me, “minimum qualifications” describes the sorts of things you should know, in order to prevent the interviewer from suing you for wasting his time, if you don’t know them. That covers much less ground than what they’ve listed.
Look, I get it, guys. You want top-notch personnel. You want people who will be able to deal with the alphabet-soup world of modern development. You want people who can adapt and learn. Fine. Just do us a favor and ask for that, in reasonable terms:
* Smart, and gets things done. (Thanks, Joel!)
* Proficient in one of the following: Java, C++, or Perl.
There. Was that so hard?
The fun isn’t limited to software engineers, though. There’s this gem, courtesy of our friends at Sony. The position: “Sr. Web Site Technologist”. The job tasks:
1. Create and maintain content on internal company web (“intranet”) servers for the IT department and selected other customers. This will involve everything from designing “look and feel” (styles), to creating new content (technical writing and editing) and reformatting of existing content. This also includes selecting, installing and customizing scripts, content management systems, and other server-side software to enhance functionality of the sites and verify web site integrity and eliminate broken links and web site content errors. Work with other departments to establish web site usage procedures and policies.
2. Create web-enabled applications by assisting product development staff in creating interfaces to web services for existing and future internal applications, departmental “intranet” services and other web/application interfaces. Provide technical support as needed to the SCEA online game community on a wide range of issues concerning web content management, web-based collaboration systems and related services.
3. Create, maintain and optimize web servers by designing, installing and configuring highly reliable 24×7 production web servers for internal and Internet services. Optimize performance of servers by analyzing web site traffic, and present regular reports detailing analysis of internal usage of the web sites and identifying needed changes. Automate the monitoring of web server health, performance, and security. Research new web technologies, and, as necessary, implement those new technologies into existing web servers. Recommend hardware and software purchases as necessary.
4. Configure and maintain related services such as DNS, email, FTP, etc. as needed to support web site development and deployment.
5. Travel occasionally as needed to support remote offices and server collocation facilities.
Whew, that’s gonna be one busy employee, but I suppose sysadmin/content producer/writer/designer/tech support gurus are a dime a dozen. Should be no problem, guys! Oh, but wait… the dreaded…
PEOPLE: Strong experience with teamwork in Internet-related server operation groups, very good technical-level verbal and written communication skills in English.
PROCESS: Ability to participate in process definition for change management and problem resolution to support large-scale 7×24 systems operations.
TECHNICAL: Must have computer science knowledge adequate to understand and communicate complex system concepts to technical teams; beginning to intermediate Unix/Linux systems administration and scripting knowledge; previous experience as a UNIX/Linux and/or web site administrator; intermediate MS Office skills; previous experience designing web sites including page layouts and use of content management systems; experience hosting web content on Unix/Linux systems; intermediate level Internet and related networking expertise; and basic understanding of PlayStation games.
PLANNING/IMPLEMENTATION: Must be able to create and maintain project plans in collaboration with technical teams and management.
INDUSTRY: Should have Internet background sufficient to understand operations, security, and network planning.
Well, okay. Apart from the “7×24 systems operations”, that’s not too bad… I suppose a lot of people could cut the mustard in such a ca… wait, what’s this?
Administer and support existing intranet sites, applications and servers in a Microsoft environment, including IIS and Apache
Knowledge and support of Stellent content management software
Knowledge of Digital Rights Management (DRM) or Digital Assets Management concepts
Administer and support SCEA’s Content Management System
Create and edit web pages and manage Company /Consumer Services / departmental intranet sites
Perform varied maintenance duties within the intranet environment
Assist with user education and training on CMS functionality, and on the use of our web page templates.
“Responsibilities” on top of Job Tasks. Umm, ok. They’ve basically recapped the more verbose version above, replacing the Linux/Unix world with the Microsoft world, but now they’ve added “user education and training” and “varied maintenance duties” to the mix. You want someone with carpentry and massage therapy skills while you’re at it? OH DEAR LORD there’s more:
Familiar with Photoshop and web graphic formats.
Experience with Windows 2000, 2003, Internet Information Server 5 & 6, Apache and SQL Server 2000.
Knowledge of Stellent Content Management and Digital Asset Management Systems.
Database: MSSQL, SQL Server 2000
Languages: C#, Java (Applet, ODBC)
Basic graphics / UI / usability design skills are desirable.
Strong web application development and design experience.
Strong foundation in object-oriented programming.
Strong debugging skills in an n-tier application.
Must be service oriented with excellent communication/people skills.
And now, my friends, we’ve sunk into Monty Python-esque silliness. Aside from nonsense like “Database: MSSQL, SQL Server 2000” and “Languages: C#, Java (Applet, ODBC)” they want a sysadmin/content producer/writer/designer/tech support guru/training session facilitator/maintenence man with a strong foundation in object-oriented programming. Oh, and you’d better be a good debugger, too. And yes, that was all from one job posting.
Sony: you’re nuts. Granted, I’m not serious in thinking that anyone at Sony really expects a candidate to know and do all that. And, one could argue, ads of that sort are just the product of some know-nothing hiring committee cutting and pasting stuff they don’t understand into documents they don’t read. Let’s assume that’s true. It’s not a good sign, for—and this is important—it’s clear that the organization that produced the above posting doesn’t know anything meaningful about the job, in particular:
- What the job responsibilities translate to in rubber-meets-the-road, dollars-and-cents terms for the company.
- The difference between a job well done, a job passably done, and incompetence.
- The number of people needed to do the job right.
- The caliber of people needed to to the job right.
They’re just like the guy who jumped on his horse and rode off in all directions. If the organization either can’t or won’t (no real difference) understand the basic facts of the job, you do not want it, because they will treat you with the same arbitrary ambivalence as an employee. Forewarned is forearmed and all that.