Technically Inexperienced
Julia Nguyen

I graduated from the University of Manitoba Co-op program in Dec. 2002. I’m 13 years on from that and many of your complaints were equally valid then as they are now. Hopefully 13 years can allow me to distill some of these problems in a way that breaks down these frustrations.

First, let’s acknowledge that the hiring process is sub-optimal. We know this, it’s easy to Google. But I think it’s worth flipping around and really starting from the employer’s perspective.

Too many candidates applied, how do I separate them?

This sounds like a silly problem in 2015 where it seems like “everybody is hiring”. But resume spam is still really a problem. Hiring people is expensive, hiring the wrong people is really expensive, but spending too much time paring down resumes is also really expensive.

Employers develop all kinds of proxies for weeding out applicants. Crazy keyword matching, inappropriate degree requirements, physical location, impossible or irrelevant “years of experience”… these are all tools to solve this problem. They’re not very good tools, but employers really feel like they need them.

I’m not an expert, how do I qualify my candidates?

This follows from the problem above. Unless you already have an established group of employees those poor filters above are probably still in use. This is especially true for small companies.

But it’s not like we have a “degree of competency in software development”. We don’t have an equivalent of the lawyer’s bar exam or the doctor’s residency or the engineer’s professional certification.

Not that our industry even really has this type of stability. Your if-me site is built on top of a tool (Ruby on Rails) that barely existed 10 years ago and will look very different in 10 more years. There are lots of Podiatrists with 15 years of experience, there are zero Rails experts with 15 years of experience. Our world is very different.

I am an expert, how can I get the best candidates?

Well, nobody’s really sure “the best” means. That’s differently for each company. Plus you probably can’t hire the “the best”, those people already have jobs and they’re making lots of money.

Most companies don’t have budgets for “the best”, they’re really look for “the right” candidate. But that’s a complex series of trade-offs between expected value of the candidate and their expected salary. And frankly, measuring value is more of an art than a science. The job of developer is extremely complicated and multi-faceted. The same person can carry completely different value for different companies. They can even carry different value for different roles within the same company.

So how the heck do I filter candidates, reliably?

Well, here’s the process we have… *insert bunch of crap you complain about*...

We are getting better processes, but this stuff is still hit and miss. I mean we still have to use the FizzBuzz test, because people have been lying their way through a career. Yes, I have earnestly met these people in real work scenarios.

So we’re slowly building out layers.

  • Can you do FizzBuzz?
  • Can you answer these basic technical questions (LEFT JOIN vs INNER JOIN, class vs id in HTML/javascript, etc).
  • Here’s some code can you explain what it does?
  • Here are some more detailed technical problems, show me what you know? Maybe you have a “portfolio” on GitHub?
  • Here are some people you will have to work with, do you share a vision on how to build a product?
  • Let’s work together for some period of time! (in some cases, see WordPress/Automattic)

This is, sadly, the best model we have right now.

And people screw it up all of the time. They don’t know how to ask the right technical questions, so you end up having to prove graph algorithms. They don’t know how to balance out “wasting your applicant’s time” and “wasting the company’s time” so you end up writing pointless, timed, automated tests.

It’s not just software developers

The interviews process in most professional fields is really poor. Interviewing and job finding is a terrible process in general, but you’re “marrying somebody in a day” when you put them on full-time payroll and I’m not sure there’s a “clean” way to do this. Consider that your MD still had to interview for their job despite having one of the world’s most rigorously certified degrees…

These person-to-person interviews are a very necessary evil of the way businesses currently operate. At the end of the day, work is done by people and between people and meeting people is an important part of the hiring equation.

And it’s not like we’re certifying technical interviewers to ensure that the person interviewing you is actually qualified to even do that job. You may have interviewed with great developers who were terrible at interviewing because they weren’t really hired / trained to do that in any way. Many phone screens are done by non-technical people because it’s too expensive to get current developers to do this.

The software industry is still working to become really competent at deploying software, we’re nowhere close to being really competent at hiring new people.

Bad companies are bad at hiring

The world is filled with companies that are bad at managing employees or just bad in general. And these companies are always hiring. They can’t keep people around because they’re not particularly good at managing people. Top people are always leaving and the only people staying around are the people who can’t get a better job. The cycle continues and the company stagnates. But a stagnant company can take years to die.

When you are fresh of out of University and you’re looking at a job board, the majority of those companies are “average” or worse (assuming normal distribution). The best of these companies have already locked in their candidates from your grad class, likely offered to hire them right after they complete their last semester.

You’re left trawling through average employers, many of whom “don’t want to train” because training developers is expensive. You need the right senior people to do training and lots of average companies don’t actually have these people on staff or those people are ridiculously busy cranking out key projects.

Your first job will probably suck…

The sad truth is that the companies that are best at interviewing and the best at retaining employees are probably not going to talk to you right now. Not because you’re not competent, but because they literally don’t need you right now.

So you probably have to get in to one of these bad companies as a first step. It sucks, I know. I graduated in 2002 during the Canadian portion of the great tech recession. My co-op employer laid off a bunch of staff during my last school term. It took 6+ months to find my first real job. I spent 3 of those months working the night shift at McDonald’s while job hunting during the day. My first job was for a tiny tech shop making Point of Sale software in a tiny office on the second floor of a mall. I was making less money than my Co-op job. The interview was a joke, my contract was literally a hand-written piece of paper with an hourly pay rate and a start date.

But it’s not just our field. One of my good friends is a Physical Therapist who spent her first two years out of school working through a series a really sketchy employers before finally getting on with a real company. Another friend is an excellent Taekwondo instructor who just left his employer because he was verbally abusive (among other things). Those sketchy companies and bosses, they’re all hiring right now, guess why?

I’m sorry…

I really am. Making new grads suffer is not really a great way to do business. We desperately need an apprenticeship model, maybe a silicon ring like our Canadian Engineering friends. But it’s not easy to make happen and we’re all doing worse for it :(