I have something to admit. The more I think about the recruitment of software developers, the more I believe that almost everything about it is full of nasty dysfunctions.
Let’s talk about three of the common and key parts; CVs, tests or assessments, and interviews.
Imagine a world where the information relating to a candidates’ qualifications, talents, skills, achievements, and even likes and dislikes are filtered by keyword matching (sometimes computerised). And, where it’s almost impossible to filter great candidates from average ones. And, where a candidates’ chances are tossed out of the window because they haven’t had X number of years programming experience in XYZ language. Or, where a candidates’ chances are reduced to zero because they’ve had too much experience in too many languages and environments (how good can s/he be if they’ve programmed in 15 languages over 5 years, right?!). Or, where a candidates’ chances are all but dashed because s/he rates themselves a 2 out of 5 for being able to program in C#.
This world is ours, I’m afraid.
What does a CV tell you about a person’s ability to learn new skills? Or their ability to inspire and motivate peers? Or their ability to adapt inside complex teamwork based environments?
Fail # 1 = CVs.
If the candidate survives this initial debacle, quite regularly the next step involves assessments or tests in something the employer deems useful. Usually, similar to CV filtering, this step involves an extremely narrow focus. So, the lucky candidate takes your Java, C++, C#, .NET, DB2, SQL Server assessment. What if s/he googled for common online test questions and studied 100s of results before taking your test? Anyway, moving on. If the person fails (whatever that means), their application gets thrown out. What if the person is an extremely talented individual, but s/he doesn’t have the excessively narrow specialism you think you require? Would you rather help someone learn the syntactic sugar of your programming language of choice for 2 weeks, or have an ‘expert’ come in and hate every minute of their new job? What do your tests and assessments do to determine a person’s levels of flexibility, their ability to cope under the real-world pressure of deadlines, ascertain their team work ethics or their ability to learn new skills and solve complex problems, to adapt in complex social systems, etc?
Fail # 2 = tests and assessments.
Ask a few sneaky questions to test behavioural patterns and responses, fire away with good technical questions, make them design something to assess their problem solving and design skills; while generally trying to make sure the candidate feels like they’re under some form of pressure while you’re at it. Oh, and don’t forget to ask them what their strengths and weaknesses are or where they want to be in 5 years time.
Sounds familiar, doesn’t it?
How do we know any of the behavioural responses are based on truths? How do you know that the person isn’t lying (or just cleverly responding) when they say that they’re “….quite stubborn and can really sink my teeth into something, not wanting to let go” when asked for their weaknesses? (that’s not a weakness, is it? Who knows). And, how well received would a response like “I want to be your bosses boss” be to the 5 year question?
Other factors that often come into play, mostly with negative connotations are; poor physical appearance, not being able to “sell yourself”, lacking some-or-other-level of interpersonal skills, not reacting to attempts at humour, or not being confident enough. What do these really have to do with someone being effective at his/her software development job?
Software Development is not about writing 1000s of lines of code (not anymore, at least). The technical and behavioral toolsets required to build enterprise-sized software applications that add real value for your customers, in complex team oriented environments with prevailing cultures and mindsets, far exceeds a narrow specialism and a few ‘good’ perceived behavior traits.
Fail # 3 = Interviews.
I don’t have the answers with regards to a great recruitment or interview process. I do however believe that today’s common recruitment process is ineffective or ‘hit and miss’ at best.
To end off, I’m going to open up a potential can of worms. If one considers the role that the system (usually, your organisation) within which we work has on the performance of an organisation, department, team, or person – things get even trickier with regards to recruitment. The great management guru William Edwards Deming ‘s 95% rule states that about 95% of a person’s performance is based on the system and not on the individual her/himself. The Marshall Model of Organisational Evolution explains how the effectiveness of any knowledge-work organisation is a direct function of the collective mindset of the people working in the organisation.
A bad system will always defeat a good person. And, assuming you’re trying to improve your organisation’s effectiveness by improving the system, why would one not want to employ someone with the mindset to help you get there, irrespective of their current narrowly focused technical skills and/or fake or unconfirmed behavioral characteristics?
Till next time. Thanks for staying.
P.S This post is work-in-progress. Hopefully some feedback helps me to improve it.