If software engineering is in demand, why is it so hard to get a software engineering job?”

My response to an incredibly common question

Curt Corginia
Better Programming

--

Whoa, this person has MULTIPLE monitors. They must be hauling ass. Look, they’re writing code AND looking at a “Getting Started” page. Hire them. Photo by Safar Safarov on Unsplash.

The title of this post was a trending Quora question, with popular responses boiling down to “it’s not, the unemployment rate is 3.6%,” “there are too many developers and not enough engineers,” and “it’s a natural consequence of microeconomic theory.” It might be useful to elaborate on the last one, but I thought it would be a lot more fun to take a look at the absolute most popular answer:

“I was unemployed for many months. Waited hoping one day someone will hire me without requiring me to white-boarding. Yep it is worse than water-boarding.

After 7 months I realized — no other choice. Now I can white board in my sleep. Companies are in line to talk to me. They are ready to send flowers and even ready to send drivers to pick me up.

Nothing changed”
— Aravind Akshan, Engineer Manager at [UNDISCLOSED]

Instead of providing a cliche response about the difference between developers and engineers, this legend pokes fun at the entire interviewing process. If you expand the other threads in this post, you will see a few arguments about whether or not the software engineer interviewing process is flawed.

In all seriousness, though, the response about economics is worth discussing. Job pay is heavily influenced by supply and demand. While there is a very high demand for software engineers, there are now 4.4 million software developers in the United States alone [Edited. The original sentence said “4.4 million software engineers”]. In other words, software engineers are not extremely rare, and a degree in computer science is not the golden ticket some people may expect. I think the popularity of computer science and the surge of coding bootcamps are a testament to how accepted this has become as a field.

Other possible reasons one may find it difficult to find a software engineering job:

  • At most companies I have interviewed with, it takes at least three interviews to get a job. This is elaborated on pretty well here, in an article by the BBC
  • Technical coding interviews are, for lack of a better description, “their own game.” You typically get between 30 minutes to an hour to solve a coding question that assesses your understanding of data structures and algorithms. Regardless of whether you think this is a good test, supporters and critics alike would agree that this is not what you actually do in the field — it’s just a test
  • Software is BROAD. You can be a frontend developer turning wireframes into a web application. You can be a backend engineer who works very closely with hardware. You can work at a company that cures cancer. You can work at a company that causes cancer. There is an incredible number of fields and roles you may have, and so we face the same scenario we face when dating: Companies will look for a very, very specific candidate with an exact set of skills, and sometimes things just don’t work out
  • I may be the first person in history with the gall to complain about this, but in coding interviews you usually get a choice of language. One drawback to this is that the engineer interviewing you, if he/she is human, will not be familiar with all of them. If you interview in a language they are unfamiliar with and have any issues, they may not be able to help you

What to Expect in the Job Interview Process?

Bananas.

There are lots of “opening strategies” you may follow. Maybe a company’s HR reaches out to you first on LinkedIn; maybe you choose to trust a third party recruiter. Your mileage may vary with third party recruiters (also referred to as “head hunters”), but to put it bluntly, there is a reason they have such a bad reputation. Some of them are really, really bad. The bad ones will try to set you up with a company that is not a good fit, they will “shotgun blast” requests to anyone and everyone, and they will not have your best interest in mind. What they want from the arrangement is money.

…Though, to be fair, that is probably also what you want.

Maybe you decide to reach out to a friend instead. Maybe you reach out to HR departments directly, or you decide to do what a zillion other people are doing and just try to indeed-easy-apply your way to success.

The initial call with HR

There are a lot of tech companies trying to make it right now, and some of them are pretty random. One company was delivering medical supplies via tiny drones. One company was trying to disrupt healthcare by making customers pay hundreds of dollars every month to see more doctors. The weirdest company I have ever interacted with was building a dating app…as if people would pay for an app where you swiped right to determine potential matches.

I wonder what happened to them?

  • They will ask if “now is still a good time.” If it were not a good time, then you probably should not have picked up. I missed one initial interview when I had to unclog a toilet
  • They will ask you to talk about yourself
  • They may ask what you are looking for in your next role. A good answer to this is probably some variation of “your company, basically.” I once answered this by saying all I really wanted to do was not work in a specific industry (let’s say, for the sake of example, that it was the auto industry). They said that they recently acquired a contract with the auto industry. It was one of the most awkward interviews I have had
  • They will really try to pitch their company
  • They may ask some really interesting questions, like what your favorite project was or what your values are, but I find this to be pretty rare

It may seem like the initial HR call is just a formality, but it actually can be the first hurdle. An HR representative can ask you for your skill set, jot down some notes, and then decide whether or not you are a good fit.

The Automated Coding Test

This is my least favorite aspect of interviews. Some companies have you take an automated coding test to advance to the next step. I think it would make a lot more sense if companies had you do this immediately after applying, then moved you along to HR if you passed. They could have HR look at your resume, send you a link if they thought you were qualified, and then have a 30-minute talk with them if you passed.

The Coding Interview

This is really the meat of it. They have written entire books about this step.

  • Choose a programming language you are familiar with. Most companies give you a choice, which is a little crazy to me considering how you can use an obscure language no one at the company uses…I never have, but in theory, you could
  • This is a really good guide
  • This resource is cuter than Maxine the corgi
  • While it is true that you can cycle through common data structures in your head when stuck on a problem, and that hashmaps are commonly part of the solution, don’t just pull a hashmap out of nowhere. One of my first coding interviews ever went something like this:

Interviewer: I’d like you to produce a compressed string. For example, you may turn aaaabbc into a4b2c1. You may turn a into a1
Me: *immediately starts coding* Let’s use a hashmap
Interviewer: Uh…well do you think you..
Me: Okay, so we’ve made a hashmap. Now let’s make a bunch of print statements

A hashmap is a useful tool, especially in these, but this isn’t an RPG. You don’t just immediately summon a hashmap and then crush every interview until you finally encounter the boss who can counter hashmaps (“oh no, guess I’d better bust out my ultimate move: The linked list!”).

In some leetcode-esque problems, you can get away with using an array instead of a hashmap (and you can use size 26 by subtracting ‘a’). Don’t rely on that for everything. Some of the simplest interview problems involve using a hashmap to take counts, and then going from there…you can’t just use a really big array without raising eyebrows.

  • It helps to know some useful calls, like std::sort or whatever the heck the equivalent is in other languages
  • The best interviewing experiences are like pair programming, where the two of you actually seem to be bouncing ideas off of each other. The worst interviews just involve the other person silently judging you

The final interview(s)

This is the part where things get a little bit…hardcore.

You might have four interviews in the same day. Maybe one is behavioral, maybe two are technical but harder than what you’ve seen before…and maybe one is system design.

A Positive Attitude

A wise, mature person would treat the software engineer interview process as a pure learning experience. He, or she, would enjoy learning about companies out there for the sake of research, interacting with key players, and mastering the art of whiteboarding. It would just be like a fun game.

I don’t think of it like that, but a mature person would. Do what I say, not what I do.

Did you like what you read? If so, please check out our fake company, CORGICorporation. Don’t try to send a message at the bottom, though…we couldn’t afford a custom backend, so if you try to do that the website will just explode.

--

--

Founder, CEO, CTO, COO, and janitor at a company I made up called CORGICorporation