You should read this first: The Horrifically Dystopian World of Software Engineering Interviews
“Would you mind if I joined you on the lift?”
I was slightly startled by the question. I was just sliding up to the ski lift this morning and was focused on looking elegant as I took the next seat. I glanced over as a man in a red jumpsuit skated up beside me with an absolutely dazzling smile. His teeth were startlingly white and the snow in the background seemed to only make it worse. I lowered my goggles so as not to be blinded. “Sure, jump on!”, I say and the lift whisked us away into blissfully forced small talk.
“So what do you do for a living?”, he asked.
Ironically enough, this was the last thing I wanted to talk about. I quickly considered claiming that I was a professional skier but remembered I was wearing a snowboard at the last possible second. Plus I was certain he would realize I was lying if I were to biff it getting off the lift. I quickly pivoted back to reality and said, “I’m a software engineer.”
His cheshire cat smile widened improbably. “You know I was a software engineer once!”, he exclaimed. This was a slight improvement over my fear that he was in actuality a professional skier. He looked pretty legit in his red jumpsuit. At least he wouldn’t laugh too hard if I did biff it getting of the lift. Several scenarios passed through my head rather quickly. Perhaps at a particular point in his software career he had gone through exactly what I had this last year and folded to become a pineapple salesman in Bermuda. Perhaps he had seen the error of his ways, hung up his keyboard, and sworn never to code again after accidentally running the production level invoicing script twice in a day. My last scenario was the most frightening: he actually was a professional skier and had exited the purgatory that is professional software engineering by signing with a European apparel company and would laugh at me when I inevitably biffed it getting off the lift.
“You should get out while you can!”, he warned. “It gets miserable after a while. I’ve seen countless layoffs over my years and some people just can’t recover. Its tough to get another software job nowadays.”
I was immediately convinced that this man was a spirit sent by the mountain gods of Colorado to warn me. He HAD to know what I just went through to say something like that.
Last Friday evening I was pursuing a key coping strategy for unemployed people: pounding the treadmill until it hurts. At least thats what unemployed people do in Colorado. We are a special breed. It was just me and an older gentleman who was dutifully spinning away on the exercise bike in the corner. For all I knew at that point he too was a software engineer in a past life. My favorite Scandanavian death metal band was being constantly interrupted by notification tones in my bluetooth earbuds so flipped off the mobile data switch in my phone. After reaching the point where my legs couldn’t go any further I began limping home from the community workout center, certain I was going to biff it on the patches of ice in the parking lot. I flipped on my data. And stopped.
My phone was literally buzzing non-stop. Linked-In connection requests were streaming in by the truckload. I opened a message and as soon as I read “on Hacker News!”, I began sprinting for my apartment: my legs had suddenly decided to start working again. I managed to reach my desk and launched Hacker News. My heart stopped. My article, The Horrifically Dystopian World of Software Engineering Interviews, was at NUMBER ONE!
“WHAT HAVE YOU DONE!?!?”, my inner monologue screamed. My thoughts spiraled out of control: “YOU’VE JUST RUINED YOUR CAREER! WHY DID YOU HAVE TO COMPLAIN ABOUT IT ALL!? THEY ARE ALL GOING TO JUDGE YOU TO NO END! YOU FORGOT TO DOCUMENT THAT ONE FUNCTION YOU ARE REALLY PROUD OF IN THAT ONE GITHUB REPO AND THEY ARE ALL GOING TO SEEEEE IIIIIITTTTT!!!!”
My phone kept buzzing as I scrolled through the comments on the post on Hacker News. There were hundreds. A strange mix of shock and pride came welling up as I began realizing that they were all agreeing with the points I had laid out in the article! People had extracted sentences of my article and were saying things like “Spot on!” and “Amen!“. I looked back at my phone and started reading emails. “Thank you for writing this!”, “This is exactly the way I feel!”, and “I’m in the same spot!” appeared again and again!
I never intended this. I write on a fairly consistent basis but had never published anything. I find it therapeutic and a great way to organize my thoughts. Once my most recent employer laid off my entire office in an apocalyptic manner, I realized I had to write about the irony of it all. At the time I was teaching myself about static sites and I saw an opportunity to combine my newfound skills and my love of writing into a blog. I have no idea how it found its way onto Hacker News but it did and spread around the rest of the internet like wildfire. Reddit picked in up, people found it on LinkedIn, and it started a raging firestorm on Twitter. I have always been a tin foil hat sort of person. I am terrified of social media. Unfortunately, the internet seems to have forced it on me, so I am trying to ride the wave and emerge from my cocoon of self-imposed internet hermitude. It’s now Tuesday and the messages are still rolling in from everywhere. I’ve made connections from all over the world: Singapore, the UK, Canada, eastern Europe, Japan, Hong Kong, Australia, New Zealand, and South Africa.
I’ve received several hundred emails and even more LinkedIn messages. I thought it would be an interesting exercise to communicate the general themes of the responses I’ve received so that others can chime in:
- Apparently very few people actually know how to program a computer - One of the more interesting (and concerning) themes of responses I got was from hiring managers and people who interview candidates regularly. These responses tell horror stories about a huge proportion of candidates, sometimes with more than 20 years of claimed experience, being unable to write simple functions like reversing a string or operating on an array of numbers. I’ve received emails from this group that claim interviewing is the most depressing part of the job and most seem that they would rather attend to groups of screaming two year olds on an expedition to Antarctica. Apparently the methodology of employing algorithm challenges is used primarily to screen out these candidates. However, one qualification that I appreciated is the general sense of agreement that the difficulty of the types of algorithm challenges I described in my article are excessive and unnecessary.
- Hiring managers generally agree that data structure and algorithm challenges are next to useless as a proxy for actual job performance - There were quite a few admissions by hiring managers at surprisingly well known companies that the ability to pass algorithm challenges does not correlate with success on the job. There were multiple anecdotes about candidates that soared through the most difficult interviews and turned out to perform poorly as an employee. We seem to have reached an impasse where companies feel that aggressive algorithm screening is necessary to weed out those who can’t program at all but the people that employ these challenges have no confidence that they are any indicator of the quality of candidate. When this type of feedback came up another nutshell sentiment also emerged: “Good candidates are good humans.” Apparently, most hiring managers seem to have better success with a focus on culture fit and an evaluation of candidate thought processes than any sort of in-depth technical evaluation. This begets its own problem: no two hiring managers seemed to agree on the best way to evaluate these features. We would do well to ask a simple question: how can we evaluate the apparently more important metric of the human side of a candidate when all we seem to spend time on in interviewing is drilling candidates with obtuse and esoteric knowledge of data structures that they will never use on the job?
Everybody seems pretty hopeless -
- Young people have all but lost hope - I had a drastically depressing number of new college grads, bootcamp participants, and junior candidates send me messages with these sorts of headlines, “I am completely depressed because I can’t get a job”, “I will never succeed in this industry”, “I thought it was just me”, “If you haven’t gotten a job there is no way I ever will”, and “I’ve lost all the hope I started with”. These messages caused me great hesitation. The last thing I wanted to do was cause anyone to give up hope. On the other hand it seems that most everyone starting out who contacted me had already done so.
- Hiring managers feel like they just can’t find good people - I had quite a few hiring managers reach out and say that they can’t find hardly anyone who can meet the modern demands of software engineering. They feel like they need to raise the bar so high because whenever they lower it people fail to meet expectations and in their words “drag everyone else with them”.
- Cynicism is rampant - “It will never get any better”, “Its getting worse”, “I quit and so should you”, and “There are mountains of posers out there” were some of the quotes I received. “The universities I recruit from put out clueless graduates”, “The bootcamps aren’t producing quality talent and I won’t hire from them”, and “I can’t rely on my team” were some others. It seems that those who have been in the field for any length of time have quite a few qualms with it. But I’ll focus on what is relevant to this article: software interviews. “I’ve got 25 years of experience and I can’t stand when people ask me algorithm questions. When I tell companies I won’t answer algorithm questions, they still try to spring them on me when I get on site.”, “I’m not passionate about algorithms but everybody is drilling me with them”, “I just got out of a front end interview and they asked me a dynamic programming question.”. “I’m a DBA and they didn’t ask me anything about databases.” Along with these experiential anecdotes, there were quite a few people that essentially said, “Its getting more and more absurd every year.” I wonder if accountants or insurance agents feel so bitter towards their own profession?
- Everyone wanted to hear my thoughts on an alternative - To be honest I was expecting this. I’ve done a great deal of thinking over the past weekend about what I should say to these types of questions. I knew I had neglected addressing it in my original article on purpose. If I couldn’t get past these pernicious barriers, who was I to say how it should be done instead? Self doubt came creeping in and I wondered if I was even qualified to comment on this whatsoever. All I have to leverage in answering this question is my experience over this last year. I’m going to leave the bulk of this question to the experts at large. However, I will say this: we all should practice active listening in the hiring process. Truth be told, I strongly dislike the notion that there is even such a thing as a hiring process. As a strong individualist, I think that subjecting individuals to processes is largely a dehumanizing practice. The modern rhetoric put out by companies claiming to be unique and free thinking entities is fundamentally add odds with the fact that every company seems to be following the lead of a select few companies in how we hire. And it seems that we are all unhappy about it! If companies really want individual contributors, they should really inspect their candidates on an individual level or at least incorporate opportunities to learn about candidates as people in the hiring process. That being said, I can commiserate with the notion that although we all are individuals, companies just don’t have the resources or time to treat every candidate as such. I also believe that at the end of the day we all are in a technical profession and companies should place value in technical ability. Software Engineering is just not easy. We are all still generally confused about how to do it and how to do it well. According to the hiring managers that contacted me there is a severe lack of people that are even minimally qualified. According to the younger folks that contacted me there is also a severe lack of people they can learn how to do it well from. Again, I’m not sure I have many answers but at the end of the day all evidence points to the fact that we all have a lot of talking to do about hiring practices.
- Spending so much time practicing algorithm challenges caused me to miss the real opportunity - I spent a great deal of time this last year just plowing through practice problems in preparation to pass interviews. But what I realize at the end of all of this is that my time would have been much better employed learning new skills. I am in a bit of a strange position in my career skill wise and I should have spent that time rebranding and working on learning new things. But that was what was so confusing about it all: none of my interview experiences last year asked me about my current skill set. None! Not one! Contrary to popular perception, I did interview with companies outside of the FAANG club. It was all about passing algorithm challenges. Even when I got to onsite interviews with companies no one sat down and interviewed me about what I could actually do and about my experiences! The closest thing I got to that was the rounds of “Tell me about a time when…” questions. So now I feel completely confused about the priority here: am I valued more for my skill sets or for my algorithmic ability? What would happen if I make it past all of the algorithm questions, got hired, and then realized there was a mismatch between what skills I had and what the company was looking for?
- Not a single person out of several thousand emails and messages came out in defense of the current state of interviewing processes - I’ll let this one stand on its own.
In conclusion to the feedback I got it seems that I really struck a chord with my original article for a lot of people. The bulk of the feedback I got simply said, “Thank you for writing this. I can totally relate!“. As you might have been able to tell from the above points it seems that there is a great deal of resentment towards the current state of interviews and the state of hiring in general which is very concerning.
“What exactly do you do in software?”, asked the Colorado mountain spirit in the red jumpsuit.
The ski lift had just shuddered to a halt. Someone had obviously biffed it getting off the lift up in front of us. I considered telling him what had happened, I had just become unemployed, accidentally exploded the internet, and was still trying to sift through the mountain of responses in my various inboxes to see if anyone had any answers to the madness of it all. The ski lift ground back into motion and as I looked down I saw a kid biff it on one of the jumps below. The end of the lift was coming up fast.
We swung under the awning and I said a prayer as I stood up on my board. As I was sliding down the ramp I looked back. Red jumpsuit spirit man had just totally biffed it getting off the lift! He recovered himself and swung back over to me, seemingly forgetting his question.
“Just watch it out there, man. Save your pennies and get out while you can.”, he imparted again.
As I watched him take off down the run, blinding everyone in his path with his brilliant smile, I turned inward again. Did I really want to be involved is software at all after this? It seems that according to everyone online that I was in for more madness when I try to move forward in my career again. I thought about what else I might want to do on the way down the run. Little kids were whizzing by me as they tend to do on the slopes. Maybe I should follow my childhood dream and build a cabin up here in the mountains. I could hunt marmots with a bow and arrow. Or maybe become a vegan and befriend one instead. My marmot and I could roam the high peaks and discuss the finer points of haiku. Perhaps that might be a better way to live.
However, as I reached the bottom I began to have a change of heart. Can I really just give up after all of this? Computers occupy quite a bit of real estate in my head. I have devoted my degree and the entirety of my adult life to their pursuit. I love learning about software every day. I enjoy being creative in its pursuit, reading academic papers on it, and pursuing that rare flow state that we all covet so much. As much as I decry the use of overly aggressive and time-constrained algorithm challenges, I also really love algorithms and think they are a critically important part of being a software engineer. Could I really just let the passion go?
The ski lift at the bottom of the run turned its slow dance as I power slided into the loading area. It seemed to take on new meaning. What if I were a spirit man sent by the Colorado mountain gods to give out unsolicited advice to young people on ski lifts? I knew one thing for certain: I definitely wouldn’t wear a red jumpsuit. Maybe green. But certainly not red. What would I say? At this point I might say “Be prepared for battle, kid. It’s tough out there.” Or perhaps, “You aren’t your profession.” I thought about all the people who said ‘Thank you’ to me for writing out what they couldn’t express. What did I owe them? I certainly didn’t have the answer they were all looking for. What did I owe myself? Was I just going to give up and go home? Should I get back on the lift?
I thought back to my college days. I thought about how strongly I felt after I realized that I enjoyed my CS classes way more than my physics degree classes. I had stumbled upon my destiny. I thought about all the crazy math classes and the late night coding assignments. I remembered my favorite professor shaking my hand at graduation and wishing me the best of luck. The first day of my first job. That moment I got my first scratch-built neural network to associate numbers with symbols. I thought about how hard I had worked this past year because I love my profession. Was I going to let a man in a red jumpsuit stand in my way? The fact is that I’m addicted to computers. I’m passionate about computers. I’m serious about computers.
What should I do after reaching number one on Hacker News?
I made a decision.
I got back on that damn lift.
There is no way in hell I’m giving up now.
I’ve begun considering new opportunities. I’m interested in cloud technologies, analytics, machine learning, and high performance systems. Not interested in front end. If it actually computes something or is challenging to understand and implement, I’m interested. I’m looking to stay in Boulder / Denver but I am also keenly interested in remote work. Drop me a line at firstname.lastname@example.org if you want to chat. Resume and github are on this site.
I am also an aspiring Twitter mob leader. Join me!