I recently went on a search for a new full time gig and I learned that today's job search is not what it used to be. Here's the quick summary of what I learned:

  1. The job search takes much, much longer than it used to.
  2. No one believes that anyone can actually code.
  3. Coding Tests Can Trip Up Even Good Engineers
  4. Extensive homework is now normal.
  5. Every company's "process" is different
  6. Outsourced hiring "services" are very much in vogue
  7. Companies Really Want to Know Your Salary; Don't tell Them
  8. Interviews Matter Much, Much More to You Than to the Company
  9. Age discrimination really exists.
  10. You'll never really know why you weren't hired.

In terms of full disclosure, at the end of this article, I'm going to pitch you on a new tool I built for managing your personal job hunt, but don't worry, it's free to use. I found the job hunt process so absolutely distasteful that the only way I could get through it was to actually create some software based on what I learned.

Who Am I?

Here's just a bit about myself so you can understand my job search. I'm a senior software guy who's still writing code after all these years. My platform is generally Ruby / Rails and my resume is here in case you care. I've been a consultant for the last few years and I wanted to get back to a full time gig in a senior engineering role.

Here are the stats from my job search:

  • Total Jobs Applied For: 82
  • Total Jobs Where You Got an HR Interview 25
  • Total Jobs Where You Got a Technical Interview: 15
  • Total Jobs Where You Got an Onsite Interview: 2
  • Total Job Offers: 1

Number 1: It Takes Longer than Ever to Get Hired

I've been in high tech a long time and other than the few really bad times, the general rule in high tech hiring has been "fill an engineering slot as fast as possible". The industry may talk a good game about culture fit but other than a few firms, it always has been about quickly putting bodies in seats. That is absolutely no longer the case. HR departments now seem to be focused on:

  1. Initially getting a large number of candidates to review as the first step (and nothing, even when you seem to be a perfect requirement match, happens until they get that large group of candidates).
  2. Marching the entire group of candidates, step by step, through their entire process.
  3. Putting as many barriers in place before hiring anyone. I discuss this more below under process.

Just so you're aware, the HR departments will not own up to the process taking longer than ever. They will spin you a song and a dance about how quickly things are going to progress and it just isn't true. My two observations in this area are:

  • Companies today, despite what they might say, are pickier about candidates than ever
  • Companies are less willing to hire than I've ever seen

One helpful thing I did during my job hunt was track everything so I actually had dates all along. Here's an example of what I commonly saw.

  • 2/5 was my initial application to Company W
  • 3/1 was when I completed my homework project
  • 3/2 was when I got scheduled for an onsite interview
  • 3/23 was when I found out that I didn't get it (two weeks after my onsite)

That's almost two months start to finish! And today that job remains on the company's web site – they still haven't hired anyone.

Number 2: No One Believes Anyone Can Actually Code

The general thing that I saw from everyone that I talked to is that no one actually believes that anyone can code. At every stage in the interview process, you're going to need to prove that your resume isn't a lie and that you can actually do what you say you can. I find this ludicrous because it is like interviewing an attorney and then saying to him "Please prove that you can cite a Supreme Court precedent". When did an entire industry of people get pre-judged as lying? Don't we exist in a country where the default assumption is innocence not guilt?

Number 3: Coding Tests Can Trip Up Even Good Engineers

An extremely common thing that you're going to find as part of a job search are coding tests and I'd urge you NOT to take them lightly. These coding tests tend to bear no resemblance to anything you'll do in the work place and even good engineers can get tripped up by them. I found that part way through my job search I had to buckle down, hit the books and start practicing on different coding tests to get my scores up. Once upon a time I would have said that any engineer should be able to pass a coding test but that's just not true. The longer you are in industry, I would argue the less likely you may be to pass a coding test. I suspect I could have done much better on a coding test fresh out of college when my "test taking skills" were actually something I used. Now? The last test I passed was for a driver's license.

Tip: You should note that since most tests come from an outsourced service like Codility, you can google for practice questions, sample exams and more. And I'd strongly encourage you to do that.

Tip: Don't underestimate coding tests at all. I did and it was to my disadvantage. You really, really need to practice.

Number 4: Extensive Homework is Now Normal

As a hiring manager, I've given homework assignments to weed out candidates from the pack but I always kept it reasonable, just a few hours in length. I've now regularly seen homework assignments ranging from 8 hours to "spend a week on this and really show us what you can do". Over on QZ there is an excellent article about this along with 984 comments on Hacker News. And yes that's a huge amount of comments on any one topic since the current amount of comments on the top 30 items on Hacker News is 53 comments.

You should be aware that your coding submission will be judged all kinds of ways, often unfairly. For one application I built, I was told "you didn't allow for proper performance given a 500x increase in data". This came after being specifically told "use no technologies other than the database itself" (it was a search application). And what good engineer allows for an arbitrary 500x increase? That is massive, unnecessary over engineering.

Tip: One thing that I did do to stand out from the crowd for almost all my homework assignments was to record a screencast talking through my work and illustrating what I thought were the best points. I had several interviewers tell me that "thank you; I've never seen that before". This gets the interviewer past any issues with getting code installed / setup, etc.

I should comment that even though I don't like the trend towards homework, I vastly prefer it to coding tests. You shouldn't think, however, that just because you passed the homework assignment, you won't face a whiteboard challenge - every place I did a home assignment for, I also got a whiteboard challenge, sometimes multiple ones.

Number 5: Every Company's Process Is Different

It used to be that getting a coding job boiled down to:

  • Send in resume
  • HR Screen
  • Technical Interview
  • Team Interview

This was a pretty standard process and I saw (and hired) a lot of people with this approach. Apparently though times change and now the "process" is all over the map. One of the most useful things I learned to ask companies early on was "Please explain your hiring process to me" and then I wrote it down for each company. This let me know "for company X, the process is":

  • HR Screen
  • Coding Test
  • Coding Project
  • Technical Interview
  • Pair Programming
  • Technical Interview with the Team
  • Onsite Interview

What you're going to find is that while there are common elements (currently homework) in the hiring process, everyone's process is different. If you know what a company cares about then you can start to get ready before it happens. For example, if you know in advance that you have a coding test in front of you, this lets you know that you may need to study. If an HR person says to me "Oh and we administer a coding test" then my first response is "I've taken a bunch of those, which one do you use?".

Number 6: Outsourced Hiring Assessment Services Are Very Much in Vogue

One thing that really surprised me was how many companies rely on outsourced hiring services. I saw this all over the place from companies that sent me a link to a coding test, often Codility, to "personality assessment" tools, often Predictive Index. I suppose this is the natural evolution of SAAS companies into the hiring space. When I was recruiting, in years past, my HR department always strongly warned me against administering coding tests on the grounds of legal issues / fairness. Now that these are outsourced, I suspect that HR departments aren't concerned at all about legal issues since they come from a vendor not themselves.

One thing that you'll find is that these outsourced assessment services are being stuck into the hiring process at ANY point in the process. I've seen things ranging from HR screen to initial technical interview to coding test to send in a resume and get a personality test fired back at you before you ever talk to a human being.

Number 7: Companies Really Want to Know Your Salary; Don't tell Them

Before I started my job search, I was lucky enough to read Josh Doody's fabulous book Fearless Salary Negotiation and the best thing I got from it was "Never disclose your current salary or expectations". I never disclosed it but I found HR people absolutely relentless on this point. I finally said to one California company "You do realize that legally you can't ask me that" and they shamelessly replied "Yes I can; you aren't in California". And you'll find that there are web forms which require you to fill it in (I always put in a minimal, crazy number like 1234).

Oh and if you haven't read Josh's book then I strongly encourage you to do so. It is a short but fantastic read. Here's an Amazon link.

Number 8: Interviews Matter Much, Much More to You Than to the Company

Unfortunately it is entirely true that any given interview matters far more to you than it does to the company that is interviewing you. Any candidate has only a relatively small number of jobs they can even apply for where as the company has all of the Internet applying (this is particularly true if the company is any good). I couldn't even count how many interviews companies missed, were late on, etc.

Number 9: Age Discrimination is Real

Disclaimer: I recently turned 50 and I'm still a hands on engineer who writes code just about every single day.

One very surprising thing to me was just how much I discovered that age discrimination in high tech hiring is real. There were all too many times when jobs that I was an absolute perfect match for:

  • I never got an interview at all
  • I was mysteriously ghosted midway though the process
  • I got all the way to the end, nailed everything perfectly and then never found out why I didn't get it

This is one of those things that you never can prove and no one will ever own up to I do think that is very, very real.

Number 10: You'll Never Really Know Why You Weren't Hired

I know that there are lots of actually good reasons why companies don't want to tell you why you weren't hired but this remains my single biggest issue with today's job hunt. I can understand that you can't tell everyone why they didn't get hired but when you get to the end point and pass all these hurdles:

  • HR Screen
  • Coding Test
  • Coding Project
  • Technical Interview
  • Pair Programming
  • Technical Interview with the Team
  • Onsite Interview

You would think that more information than "We all really liked you but we went in a different direction" could be said. I saw this repeatedly on jobs that I got all the way to the end point on. How is a candidate ever supposed to improve themselves when the company will not tell you why you didn't get the job?

And Here's the Pitch for Job Hound

The end result of all this was that while I did end up with a full time job, I also ended up creating a new free product, Job Hound to make applying for tech jobs (generally programming) easier. Job Hound is a job application tracking system and it puts the job application firmly in charge of the process. I built it because after I had applied for about 15 jobs, I had no idea where I was in the process and I couldn't give my wife a decent answer about my progress because I simply had no idea. Job Hound isn't a SAAS product, it is 100% free and I'd encourage you to check it out.

My new free product is Job Hound: Make applying for tech jobs suck less! Sign Up Today.

Also here is Job Hound on Product Hunt in case you want to toss me an upvote. Thanks in advance.

Conclusion and What this Means for the Industry and the Job Seeker

I wouldn't underestimate these changes to the hiring process and their impact on the industry as a whole. Here's how I see things changing:

  • Decreased job mobility. If jobs are harder to get then engineers will be less willing to change roles than they have been in the past.
  • Lower salaries. Generally speaking the easiest way to get a raise as an engineer is to leave your job. If jobs are harder to get then less people will leave and that will drive salaries down.
  • Less Cross Pollination of Ideas. While companies may not like job mobility, I would argue that on the whole it has been good for high tech in general. By engineers moving freely across companies, we've seen a great dissemination of engineering techniques and approaches. If engineers lose job mobility then that will absolutely change.

Given how high tech has been such a tool for job creation over the past few decades, I really don't like the implication of these trends but I do see them as very, very real.