LeetCode and CodeCademy and Pluralsight
At least 50% off from FlexSub
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.
Instead of offering a cliched response regarding the distinction between developers and engineers, this urban legend mocks the entire interviewing process. If you expand the other threads in this post, you will find other debates over whether or not the software engineer interview procedure is incorrect.
However, the comment regarding economics is worthy of discussion. Supply and demand have a substantial impact on wage scales. Despite the high need for software engineers, there are already 4,4 million software developers in the United States alone. The original phrase read "4.4 million software developers." In other words, software engineers are not exceedingly uncommon, and a computer science degree is not the golden ticket that some may believe it to be. I believe the popularity of computer science and the proliferation of coding bootcamps demonstrate how mainstream this profession has become.
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?
There are numerous "opening tactics" available. Perhaps a company's HR contacts you first on LinkedIn, or you decide to work with a third-party recruiter. There is, to put it frankly, a reason why third-party recruiters (sometimes known as "head hunters") have a poor image. Some of them are truly terrible. The bad ones will attempt to place you with a company that is not a good fit, will "shotgun blast" requests to everyone, and will not have your best interests in mind. They seek financial gain from the arrangement.
...Although, to be fair, you probably also desire this.
Perhaps you opt to contact a friend instead. Perhaps you contact out to HR departments directly, or you opt to follow the lead of a million others and use indeed-easy-apply to your advantage.
The initial call with HR
Currently, there are numerous IT companies attempting to succeed, and some of them are quite strange. One company delivered medical supplies using miniature drones. One startup attempted to disrupt the healthcare industry by charging customers hundreds of dollars each month to see additional physicians. The strangest firm I've ever interacted with was developing a dating app...as if people would pay for an app that used right swipes to evaluate possible matches.
I wonder what became of 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
The initial HR call may appear to be a mere formality, but it can actually be the first obstacle. An HR representative can enquire about your skill set, take notes, and then determine if you are a suitable fit.
The Automated Coding Test
I dislike this portion of interviews the most. Some companies require you to pass an automated coding test in order to proceed. I believe it would make a great deal more sense if employers required this right after the application process, then forwarded successful candidates to HR. They may have HR review your résumé, email you a link if they believe you are qualified, and then conduct a 30-minute interview if you pass.
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.
LeetCode and CodeCademy and Pluralsight
At least 50% off from FlexSub
Better, flexible and cheaper subscriptions for a wide range of services in just a click of a button.Get started now