Published on 27 Jun 2020 by Dave Regg
From time to time, I go on a binge of just applying for jobs. I don't really expect it to go anywhere, I just do it so I know that I am throwing my hat into the ring. It makes me feel like I am preparing myself for my future.
I was doing that earlier this week when I got an unexpected message from a recruiter on LinkedIn.
I have reviewed your resume, it read, and I would like to discuss this opportunity further with you. Please message me back with timeframes where we can schedule a 45-60 minute interview about this position.
I had just written a post about searching for a job in this COVID-19 climate, and my regret of not going through with the interview I had last year. This was an opportunity I just had to pounce on, no matter what my anxiety level was. I emailed the recruiter back with a timeframe of Friday afternoon. It gave me two days to prepare myself and to build a little bit of confidence.
The position I had applied for was Fullstack JavaScript Developer. I had no idea that I had even applied for a position with that title. I typically go for entry-level or junior developers. After reviewing the qualifications for the position, I could see why I had applied for the position. Experience required with:
React / Redux: The majority of my projects use this frontend framework and state management.
Node / Express: I have built RESTful APIs and a server with Node and Express
MongoDB / NoSQL: The only database I have significant experience with
Beyond the stack, the rest of the qualifications were either soft skills (good written and oral communication) or skills that I lack, but I felt like I could build (affluency with Linux, experience writing tests). Clearly, I was only selected because I have experience with the MERN stack that they were building this project with.
Let this be a lesson to some of you. It doesn't matter whether you have the experience or not, just keep applying for jobs if you have some of the experience. You never know when you will get an opportunity to impress them with an interview.
When the recruiter requested the interview, I was excited because I thought it would be impossible to get a job at this point in time. COVID-19, unemployment, and social distancing were making it impossible to meet recruiters or companies. I enthusiastically accepted an interview without much thought. I didn't really think to ask what type of interview it would be. Instead, I had just assumed that it would just be a Get to Know You type interview like I had experienced in my last programming recruitment.
I started digging into the company and doing my research so I could impress the interviewer. I went to the company website to find out that it was actually a non-profit. The goal of the non-profit was the bring STEM (Science, technology, engineering, and math) curriculum into schools and to help educate the teachers with those STEM curriculums. What a great cause!
I also learned that the person who I thought was a recruiter was actually the lead software developer for the non-profit. That cast my Get to Know You assumption into doubt.
This is when I started getting nervous. I found this out the morning of my interview. I was prepared to talk about myself, I could talk about my stack, I could talk about my journey. I could speak on the non-profit and ask plenty of questions.
But now I just found out that technical questions could potentially be part of the interview. This is something that I have very little experience with. Not only do I lack people in my life that I can speak about programming with, but my confidence is already pretty low and my anxiety levels only keep rising as the interview time gets closer and closer.
I then spent about three hours on LeetCode doing a series of algorithms to get me into a rhythm. If there were to be a writing challenge, I would at least be prepared for that. I could talk about my background. I could at least talk through an algorithm.
The Zoom meeting was about 15 minutes away. I put on a buttondown shirt and a tie, log into the website, and put on my best smile.
The tech lead of the non-profit, Dave, is a friendly fella. He has a Star Wars background on the Zoom meeting. He makes me comfortable knowing that he is just as stressed about this project as I am about this interview. He tells me that I am his second to last interview this day, and that he's looking forward to his weekend.
Then he explains the process of the interview. It starts with him explaining the company and the grant that they would be working on. He would give me a demo of the website, then ask me a couple questions about myself. He will then grill me on the stack and other qualifications, and finally do a little code review.
So no, no algorithms, no live coding challenges, nothing too difficult.
The first half of the interview went great. I loved the non-profit and the idea of bringing STEM into education. I loved the project that they were working on. It helped with collaboration, it helped with learning math, and I thought it was just an overall great program.
The interview took a turn when Dave started asking me questions about qualifications. He asked me if I had experience with x and to describe when I have used it. He started with the stack, a piece of cake. Like I said, I have plenty of experience with MERN, with clean code, and with APIs.
He then started asking me about Linux and Test Driven Development. That's when I started to flounder. I have no experience with either one, and I told him that right off the bat. I know how important TDD is, I know how important it is to learn some kind of testing technology. When asked why to test and how to implement, I got flustered and just blurbed out an answer. He said there are plenty of right answers, but his most important reason is because of legacy code. As a new programmer, you can see the purpose of the old code and what it's supposed to do. Writing tests should be written after knowing the design of the code, because then you know what to expect.
Then he started drilling me on Linux commands. I told him I have never used Linux, and he said most people haven't, so it's okay. But with each "I have no idea" I said, and after blubbering through TDD, my smile had faded, my confidence pooled beneath me, and I just felt like running away.
That wasn't even the worst part. He then brought up VS Code and the application with which we were to be working on. He said If you were to be working on this page, how would you navigate there? Since I was at such a low point, and this was something I have never experienced, I was incredibly flustered and uncomfortable with the entire situation.
Had it been on my computer, I would have opened the majority of the directories, took my time, and read each file carefully. I realize now that I should have spoken through my process as I navigated from each directory. Since I didn't, I probably came off as someone who was just guessing.
We then went to the backend. At this point, I spoke a bit more about my process and asked questions about the file. But I felt like the damage was done.
He quickly dismissed the interview with an Unless you have any questions, I think we'll call it quits now. I'll let you know next week. I didn't even ask any questions.
I'll be honest, I was down on myself for a couple of hours after the interview. I felt like I failed my only opportunity to change my career. I was excited at the prospect of a non-profit, especially with one in education, something that I thought was a perfect opportunity for me because I have taught myself programming and I thought that I could bring that with me.
The big ol' screw ups at the end really stuck with me though.
Reflecting now, I see that I can learn from this. There are a lot of things that I can work on to improve my hireability.
Test Driven Development: He suggested that tests should be written after the design of the code is written. I should look into a technology (Jest, Cypress) that I can add to my existing projects so I have experience writing tests.
Pair Programming: Not only do I need experience working on a team with pull requests from Github, but I need experience just speaking with people about programming. The most enlightening part of the interview was how silent I was when it came to navigating the application folder. I need to learn how to speak with people about programming and talking through my problems.
Interview Prep: I had signed up for interview.io a few months back but I haven't taken advantage of it yet. Instead of assuming that every interview will be exactly alike, I should prepare myself for any kind of interview using the tools that are available to me.
Read Some Code: I really liked Dave's test was reading through code. I am used to reading other code, but I don't speak through that code. It could be a huge benefit to read other code and talk through it, to get some new code architecture ideas and learn from other programmers.
In fact, the most important takeaway is that I am not too far away. Had I prepared a bit better for the interview, I could have nailed it and gone to the second round. As I sit and wait to hear back, I know that I won't have a follow up interview, but it is a relief knowing that I can become a desired candidate with a bit more work.