I was interviewing for a company whose main product was a web application for managing your inventory of a niche collectors item related to a major industry. You’re basically showcasing your collection and managing it for trading, selling etc.

My first interview went well. It was with the COO I think. He was basically like “are you willing to bleed for us?”

“We do really cool, awesome stuff too.” “We have a work hard, play hard mentality.” In order to ace this type of interview, just act as excited or as upset or whatever as the person interviewing you. And say “yeah” and “well, absolutely” a lot. This interview went great.

The Technical Interview

The second interview was the technical interview. I had managed APIs that had real-time streaming using EventMachine, Node, etc. I had setup EC2 instances behind ELB with auto-scaling. I entrenched myself in OOD principles from about 2006. I had written production applications in 5 different programming languages (not including HTML and CSS of course). I am confident in a technical interview. I’m not overly confident. It’s just enough to take the pressure off so it can be a conversation.

Here’s where it gets good.

I sit down at a conference table across from their Senior Developer. He was leaving to work for another company and was excited to be a part of hiring his replacement. I first started developing web applications in 1997. I had my first full-time developer job in 1999. I consider my work history pretty good (https://www.linkedin.com/in/philspitler).

He asked “where did you go to school?” I replied, “If you mean college, I did not attend college. I received my GED from Mooresville Senior High.” I went on to say “Because of this, while I can answer just about any question you can throw at me about Object Oriented Design, system architecture, etc. however, I would likely struggle with anything dealing with Data Structures or Algorithms.”

What happened next nearly made me walk out.

He looked directly at me and asked “Can you show me on the white-board how you would go about walking a binary tree?” Maybe he was going to ask that as his first question and this was just bad timing. But, something about the glimmer in his eye told me I was being bullied.

After I got over my internal struggle with what just seemed to take place, I simply decided to go to my default mode (Learn). So I asked, “What is a binary tree?” He then hopped up and white-boarded a description and talked me through it. So on the spot, I have to come up with a way to traverse this data structure I’ve never seen before. I thought “recursive function.” For 15 minutes I stumbled and mumbled my way through this problem. All the while, I’m asking my interviewer qualifying questions to see if what I’m thinking makes any sense.

I originally made the comment about Data Structures and Algorithms as a qualifying statement. I expected to hear “we make use of those heavily here, it might not be a good fit for you” or “no worries, I haven’t used any of my CS knowledge here.” I surely didn’t expect to be hit head on with a CS white-board question.

The rest of the interview went as well as it could after feeling you’ve been kicked in the gut and your lunch money stolen. He helped me when I got stuck, and we worked through it. They offered me the position on a contract basis initially. After determining this person would no longer be working here, which meant I didn’t have to deal with the arrogance, I took the offer.

2 weeks later, it was apparent the elite attitude of the Senior Developer I was replacing permeated the entire company. I told them I appreciated the offer but it wasn’t a good fit for me.

I’ve replayed that interview over in my head countless times. Just trying to figure out what it was all about. After the first question, everything else had to do with tools and paradigms I’d be using as the Senior Developer at that company.

It’s a Secret Handshake!

CS skills are the “Secret Handshake”. At least that’s what this felt like. I’ll wait for others to comment before jumping to the conclusion that’s all it ever is.

My Imagination

In my mind, I created a story. Tech companies that utilized Ruby and JavaScript heavily, have 28 year old Senior Engineers with CS degrees with no better place to utilize these skills than when technically interviewing 22 year old new-hires. The ages are made up, but probably close to being accurate.

The Senior Engineer believed that candidates who can recall, from memory, something that is usually taught with a theoretical example (because not many real world ones exist) can solve complex problems.

The Senior Engineer asks their questions. Some of these pertain to the job that needs to be performed. Others are secret handshake questions.

Many candidates answer all of the questions pertaining to the job (Git, Ruby, AWS, whatever else is in the job description), to show they really are skilled in what is needed.

The Secret Handshake In Action

The Senior Engineer tells their hiring manager that all the candidates who don’t know the secret handshake, “are not qualified for the position”, even if they have the largest future potential with the company based on their ability to learn and their grit.

Conclusion

If nothing else, this is one perspective of what is going on in the Software Industry.

This arbitrary barrier to entry is troubling to newly graduated bootcamp students with an amazing set of practical skills which could be utilized by companies immediately. If a company wants to legitimately determine if a job candidate can solve problems, ask them how they’d write a small, but mildly complex feature into the current codebase. This could be something as simple as how they’d add a feature to survey site visitors. Reciting a precise method for doing a precise type of problem learned in school has to be one of the worst ways of determining true problem solving skills.

If a company is hiring for a Ruby or JavaScript position that is considered Junior, they should stop looking for people who can walk binary trees and start looking for people who understand why it’s crucial to closely managing package dependencies as you systems grow.

Takeaway

If you don’t know the answer to one of these types of interview questions, don’t fret. In that moment, adjust your focus to learning something new, rather than landing that particular job. At a minimum, you’re better prepared for the next interview. At a maximum, the potential employer sees that attitude as an asset greater than the knowledge they were expecting you to know, and hires you.

Here is one the first part of the handshake. Shhh… Don’t tell anyone.