I’ve been working in tech for last 2 decades, first as a freelance web developer and now as a Front End Developer and UI/UX Designer (with a few fun startups in the middle doing a bit of everything), I love the web and how it has blossomed into a huge,mostly beautiful and diverse ecosystem, one constant through all these years has unfortunately been the hiring process, it is considered broken and surviving it while good for most is a less than ideal situation. I am personally baffled by it, and this is my attempt at making some sense of it.
Note: I am always interviewing and applying for jobs whenever I can, why ? it’s like dating, if you want to go out on a date, ask 10 prospective partners out, if you want to get good at dating, go on 10 dates, (ask 100 datees out ), same logic different problem, also it is informative and even though I am mostly a freelance/remote developer & designer, every so often the conditions/company/project are good enough to consider being hired as a full time employee, companies I think do the same.
So what’s the perceived problem ?
It has always seemed to me a bizarre,arcane, offensive & complex ritual, I suspect it is inefficient and perhaps most baffling most companies seem to be okay with it, the HR lady (or guy) and the hiring process might be costing companies money and making them enemies ( or worse, competitors) rather than helping them make money and fulfill their goals.
At the very top,there is a very basic problem that hiring in tech ( and other places) is trying to solve:
So how does hiring in tech play out in the real world ? let’s start with the career page on your average tech company:
Nowhere to be found in hundreds and hundreds of career pages is there a mention of the 2 most important things I want and you probably need,specifics ( pay, task, particulars ) and some sort of reassuring handshake for our potential mutual and beneficial business relationship.
There seems to be a certain taboo about specifics, access to information seems to be critical for an efficient market to work, but it is also used as leverage and protection against competitors, this point bears dissecting. Imagine if you will a job market/world where we all know what everyone else is getting paid by each company:
This might be a better arrangement since low paying companies will have to either increase prices to attract employers or offer other incentives, for the potential pylon builder (or employee) price discrimination becomes but one more filter along with location, incentives, and other points for consideration. I am leaving aside supply and demand dynamics, but in general this market should be more efficient for everybody involved.
Where to start finding a job
Bombastic career pages are but one way to start the process of getting a job in tech nowadays…. ( data adapted from stackoverflow developers survey ) :
If we are to believe this breakdown, a reasonable strategy to maximize the odds of being hired would then consist on being social ( befriending other tech workers, going to meetups, talks,events, hanging out at coffee shops, moving to silicon valley,etc, etc), this unfortunately limits your reach and opportunities if you can’t relocate for whatever reason (citizenship, commitments, economy),discriminates for age, inflicts a handicap on you if perhaps you are good with tech but bad with people; and to me it feels like a mismatch of the activity and how you get to do said activity.
Your second best bet ( the job board ) seems flawed by virtue of the effort needed vs the payback and the sheer impersonality of it, the minutes filling online applications over and over, each one ever so slightly different add up, mailboxes get filled up with resumes and canned responses, and in the end there is very little to show for, maybe a few interviews a week (more on metrics in a second). Additionally, while one might somehow get used to rejection, the way they are handled has always seemed brutal , either there is no response (the cold shoulder) or there is a nicely worded template reply that reflects the coldness of the whole process, to top things off, this dismissal is done by the HR lady (or guy) which might or might not be qualified to asses a candidate in literally seconds, fun.
How about recruiters or headhunters? Well, in theory they are a good idea, they focus on finding qualified people and lead them to the hiring party in exchange for a commission. In practice though they add yet another layer,steps and time to an already inefficient process and the experience from the average applicant is usually less than pleasant.
The process of getting hired in tech doesn’t really start in earnest until you start engaging a potential employer by any means, a process that can be described as a multistage funnel where many candidates go in and only one comes out, it looks something like this:
Why the complexity ? Why not hire the first guy that shows up ?, why the mistrust ? why the interviews ?
Well it seems to be a complex subject, some folks think it is both indicative and caused by a hierarchical structure gone wrong, while others think it is a reflection of a corporate/startup culture that believes finding the right individual is paramount.
There is room for debate and little data on what this does to both candidates and companies, but the funnel metrics sure don’t look good.
Imagine how much more productive we would be as society if those 40 days were instead 20, or even less. Additionally, this funnel seen from the applicants point of view is both a waste of time and an unpleasant experience.
Screening and interviewing
Workers in tech are subjected to a series of dubious tests and interviews not usually seen elsewhere ( although they aren’t unique to the tech/software world and could be spreading along with startup culture), let’s go through a few of them:
The Coding-Technical Assignment:
I usually say NO to coding assignments to the shock of the HR lady (or guy). Asking for a freebie is such a bad way to start a business relationship, try asking a plumber to unclog a few toilets to see if he really is a plumber, try asking a financial adviser,a lawyer or a doctor for a free assignment (that you concocted) and then you will short list him/her.
So how on earth would one know if the man can make pylons ? Well, I think there are at least 2 ways: One you take your chances, you sign a contract where you pay if there are pylons at the end, you stop doubting and insulting everyone that knocks on your door and instead you trust them and assume that they will learn if need be and work with you to solve your problems; if there are no pylons at the end, then it was the cost of doing business, you can even offset this cost and manage the risk by doing a smaller paid contract or trial period first.
The second, which might be better for everyone involved is to simply ask and consider an existing code base or body of work. As an applicant I think it is ever more important to have a portfolio, repository or online code samples. I personally like to do tutorials, (teaching is a great way to learn ) talks and have plenty of code samples available. Unfortunately it is not clear to me they are taken into consideration, but the responsibility also lies upon us applicants to say no to the coding assignment, and politely show them what you already have.
While we are at it, I think you should also start early (before being hired) thinking about what you will end up having to further your career, this is an important clause in my design contract:
Designer retains the right to reproduce, publish and display the Final Deliverable(s) in Designer’s portfolios and websites, and in galleries, design periodicals and other media or exhibits for the sole purposes of recognition of creative excellence or professional advancement, and to be credited with authorship of the Final Deliverable(s) in connection with such uses.
A company that does not agree to a similar clause wants to use you and not work with you, and important distinction to know.
The Coding Test
A close relative of the coding assignment is the coding test, which usually consists of gotcha & technical questions about a language,framework, method etc,etc. Some other questions might involve the history, background and current state of certain technology and your level of expertise, how to optimize a very specific problem and the ever popular what would you do if such and such were given to you to reach certain outcome. While most of these tests (and assignments) are administered by the end company, there is a new rash of online testing as well. In both cases, it seems like a dubious way of testing a candidate…
On one hand you are trying to condense technical know-how into memorized pieces of information, and then judge someones ability by his recall performance on your terms; on the other hand a test might not measure the important things your company needs. (loyalty, passion, creativity, resourcefulness and on and on).
Slight Detour into the world of memory and neuroscience: Human memory is a subject I hold dear and I am fascinated by; relevant to our conversation about hiring and technical testing, there is memory for skills, activities we humans do that improve with practice and that are difficult to explain verbally. (Ask most experts in a specific skill how they do something and they will have to think hard before answering ). While memory for skills is usually associated with motor skills (think juggling) they also extend to cognitive skills ! (think coding). So a technical test might be turning down veritable experts in technical fields for their natural inability to express in words what they do ! How about that.
The webcam interview with the HR lady (or guy) is at the very top of things that morbidly fascinate me, one one hand it is a miracle of technology, yet on the other hand it is a failure (or reflection) of humanity. I particularly love the bit where they ask what ones salary expectations are and you try to dodge it. We are in essence using an advanced communication tool to not communicate !
It is also when reality meets a brand, You might have certain carefully manicured impression of a brand or company, but if you really want to know a company talk to them as an applicant.
There are multiple reasons why having multiple interviews would seem like a bad idea, while a company or department has certain objectives that need to be met by a new hire or contractor, each interviewer might have other (hire the cute guy,girl, advance a friend, sabotage the company, avoid competition and a thousand other reasons not inline with the general good) and bring his/her personal biases along. Another common reason to do interviews is for culture fit, something that at first might seem reasonable, but if you think about it interviewing for culture fit is another way of saying we discriminate against your culture, or ours is not inclusive,welcoming and nurturing, else why test ?
Another issue that I’ve noticed, is that as I interview more and more, especially after a period of not applying, I get further down the funnel as the interviews pile up, that is I believe I get better at interviewing, yet I am basically the same candidate, my skills, interests, etc are the same.
New cage syndrome is a known issue to animal trainers, you place a trained animal inside a new cage an suddenly it forgets all it’s tricks, the environment is just too distracting. Pair programming is to most programmers and professionals in tech and otherwise like a new cage, there’s pressure to perform a novel task with real consequences, good and bad in a new environment. Once more I believe it is up to the candidate to politely say no to pair programming and point them to an existing code base or portfolio.
I love whiteboards, they are a great tool for setting out a projects architecture, track progress and bounce ideas with yourself and others, I also use excel, sketchbooks and mountains of paper both digital and real. What these tools have in common is their ability to expand our limited working and short term memory freeing us to build on top,iterate and expand on what is already on the whiteboard or tool.
Judging someone by how they solve a problem on any of these mediums is hard to support, for starters there is the aforementioned cage syndrome, but since these are communication and creativity tools, how would you judge a candidate ? A standard on whiteboard programming, whiteboard programming 101 or even a method for solving technological problems with the help of a whiteboard are nowhere to be found. You know the drill, politely say no to whiteboard programming and point them to an existing code base or portfolio.
In very few cases there is hard data that these steps result in better projects or companies, what one would need for a reasonable comparison and metric would be a rigorous A/B test. Some companies (Google for Instance) have done some work and fine tuned some parts of their hiring process, but data is not easily available. I still believe there is a lot of survival bias in how the hiring process is measured, for instance a few big software companies are known for their grueling, endless interviews and tricky code testing which they defend by pointing out to their size, or relative success. Survival or survivorship bias comes into play when you fail to take into consideration what the outcome would have been if you had hired differently. And finally, success might be caused by other factors external to the hiring process ( they were first to market, luck, competitive advantages, etc,etc).
In the End
As mentioned at the beginning, this is mostly a diagnostic post to try and make sense of hiring in tech,my impression could of course be wrong since I am just one person and I would be interested in your opinion from wherever you stand in the process ( hiring,applying headhunting,manager,ceo). What I think we can all agree is that as it stands, hiring in tech is a highly inefficient and complex ritual that probably shouldn’t be that intricate, it also provides a number of unneeded headaches for both recruiters and applicants.
If you belive the current state I just described, as an employer you are now tasked with questioning your process and backing it up with data, you might also want to work towards being more flexible,open and agile in your hiring process; a process whose practices are due for a change and ironically HR departments could find themselves out of a job if they don’t initiate and control this changes.
To the applicant I unfortunately don’t have much to offer, it doesn’t seem to matter that your tech niche is in demand or not, you will still be subjected to a broken, unjust and seemingly arbitrary hiring process, what I can offer is the insight that you have a lot of power in the hiring process, from which companies you apply to and what tests you agree to, you are equally responsible and you can stack the deck in your favor by backing up your presence with a body of work and saying no to a process you don’t agree with. Keep in mind that companies might never change their hiring process, so that would leave you with independence as your only alternative, something hard to achieve and deserving of its own analysis.
In the end, while technology could help ease the process, it is my understanding that an attitude change and better data could be better leverage points. A rearrangement of duties and responsibilities for both recruiters and applicants can improve the current process, but ultimately I believe that cultural and structural change are needed, this could be a competitive advantage to some, to others well…
About the Author :
Eugenio Noyola Leon (Keno) is a Designer,Web Developer/programmer, Artist and Inventor, currently living in Mexico City, you can find bits and pieces of his work at www.k3no.com , always looking for interesting,reasonable and respectful projects,companies and people.