Jobs are a common theme for conversations at the Recurse Center (RC). For many people, that is the next step (and the previous step too). It was insightful to hear the stories of those who had worked in the industry for many years; it was terrifying to hear the others struggling through many interviews; it was thrilling to hear the experiences of others who had just found new careers; and it was nerve-wracking to soon be on that path myself.
Preparing for Interviews
I pushed back beginning of my job search as much as possible to focus on programming. Aside from the nerves, this is common advice so that RCers can focus on their projects during their batch. In addition, my batch ended right before the holidays. It only made sense that I enjoyed my Christmas and New Year stress free as no one would be reading my applications then anyways.
During the second half of my batch, interview prep became more and more of a priority. One part was getting used to common algorithms and data structures. The “Algorithms: Design and Analysis” Coursera course was a solid foundation in theory. In practice, I had to also work through problems that fell under each concept until I fully grasped the patterns. For me, a helpful starting point were the workshops that fellow RCer made Graphs and Dynamic Programming. I tried to cover other algorithms and data structures in a similar fashion as I found the format useful.
There were days where I worked solely on problems on websites such as HackerRank, Leetcode, and Code Wars. During the interview process, if it was a technical interview, I made sure to get my head in the game before with at least 30 minutes, often much more, of practice problems going in.
Luckily my last job left me with many examples that were suitable for conversational interviews. During my job hunt, I had the privilege of the RC community to practice my responses. Usually, this is the part of the interview process that I dislike the most, but having others pick up on the subtleties in my wording in a neutral environment was actually surprisingly helpful. 3 alumni worked through my spiel with me and critiqued my phrasing so that I could come off as strong of a candidate as I could.
Applying to Companies
I started to send out applications on January 2. Within that week, I already started to do phone interviews. Every weekday moving forward until I had accepted my offer, I was in some sort of interview, often several in one day. At one point, I was on a train down to New York and in a technical interview where I lost phone signal through a tunnel - that was probably not the best idea.
In the end, I had applied to 31 companies. My search consisted of RC partner companies (13), companies to which friends referred me (2), and companies with openings that I found on the internet (16).
Honestly, I had no idea what to expect. Particularly as a new face to the industry, I did not know where I could even get a foot in the door.
My search criteria was that the company did web development and that they had good culture. The former did not filter out many companies, but was easy to identify. The latter was mostly through word of mouth or my own research. Although I could get a sense of the company through early interviews, it wasn’t until the on-site/final interview where I really felt like I could get a clear sense of the culture.
In addition, I tried to find companies that were solving interesting problems. However, I knew that I would be learning a lot about programming in any case, so this was less a priority than the two points above.
I spent 3150 minutes = 131.25 hours in interviews. Of those,
- 8 hours were online technical interviews (e.g. HackerRank)
- 12 hours were phone technical interviews (e.g. working through a problem with a future team mate)
- 19.5 hours were on-site interviews
These tallies do not include the many hours preparing for each interview - researching the companies before each phone screen and practicing before each technical interview.
Don’t judge a company too early. There was a company that was still very much a “startup.” The conversations that I had was either 10+ minutes late or had to be rescheduled. This obviously did not leave a good first impression. However, as I got to know the company more and more, I actually became more interested. Although I was invited to an on-site interview, I had to withdraw due to a deadline on another offer. I’ll definitely keep an eye out on their trajectory.
Open-ended questions are hard to answer fully. For one company, I had an extensive coding challenge which was supposed to take a few hours. There were so many opportunities to take it in so many directions I ended up spending a lot of time on it. I kept finding another tiny piece that I could add to make it “perfect.”
Work with recruiters. Note that recruiters have many candidates to keep up with. I did have to poke a few once in a while because it was easy to get lost in the process. At some companies, if I had kept in touch more regularly with the recruiter, I could have potentially made it to on-sites and offers.
|Applied to (total)||15 (100%)||16 (100%)|
|Responded to application||9 (60%)||10 (62%)|
|Phone or online interviews||9 (60%)||4 (25%)|
|Final round interview||3 (20%)||1 (6%)|
|Offer||3 (20%)||0 (0%)|
|Withdrew from process||4 (27%)||2 (12%)|
I had applied to roughly the same number of positions through referrals (RC and friends) as through online sources. Being referred made a notably large difference in getting to the interview stage.
In cases where I was not referred, although there was an opening listed on their website, I was sometimes told that they were not looking for additional engineers at the moment and to come back in a few months; that the position had already been filled; or that I was not the right fit for the position. In contrast, when I was referred, I was usually working with a recruiter inside the company that aligned my interests to an opening within their organization.
My first offer came in on January 25. Let’s call this Company A. This verbal offer accelerated my interview schedules at other companies. Once they heard that I had an offer in hand, they made every effort to fully consider me for a role on their teams.
I was scrambling to both holding off on responding to the first offer and acquiring more options. Once Company A got me a written offer, Company B came in with an offer. This in turn gave me leverage on Company A.
My final round interview with Company C happened the morning of the day by which I was supposed to respond to Company A. I asked for an extension from Company A which they agreed to for after the weekend. Company C got back to me that same day with a verbal offer.
In the end, Company A raised the base salary offered by 35%. The liquid compensation at Companies A, B, and C ended up in the same range. Any differences could be ignored considering differences in cost of living. So what were the deciding factors?
Making the Decision
I never would have thought coming into the process as a new software engineer without a formal background that I would have multiple offers.
Company C is based in Boston. It would be close to my family. I was referred there by a high school friend so I had insight into the company. The company has a program specifically for onboarding new engineers. While it can be a great learning opportunity, friends told me that I would be equally well off without the structure.
Company B is based in New York City. It would be close to RC and my old roommates. I was referred there by RC and again, had people who could give me the inside scoop. The position would give me more freedom in the type of work that I would take on. This also meant that there was little management structure.
Company A is based in San Francisco. It would be close to many of my college classmates and the entire tech community. I was referred there by RC and knew people from RC and MIT who had great things to say about its culture. The position would have a narrower focus into front-end web development but still offered plenty of room to grow. I was impressed by the caliber of engineers I met and by the efforts of managers in helping their team members develop in their careers.
It was a close decision. Some of it came down to gut feeling. (Culture is important and it is sometimes hard to articulate.)
I ended up picking Company A.
I signed my offer right before my birthday. Being done with the process was a great birthday present in itself. The entire job hunting process lasted 6 weeks.
Huge thanks to RC for making this possible. The jobs team helped at every stage of the process, and now I am lucky enough to be at a company that I had considered a stretch goal.