Wednesday, August 15, 2018

Interviewing as a Programmer

After three and a half years in my last position, I just made the move to a new company. This was my first time looking for a job since college, but I had been lucky enough to watch a few friends go through the process recently. Overall everything went smoothly, but required a healthy amount of planning, persistence, and zen. Once I announced I was leaving my old job, I encountered friends and coworkers who asked me about the process, so I decided to distill the lessons I was sharing and put them down in type for y'all and future me.

To preface this post, I want to make it clear that I was at peace with leaving my company. I had originally only planned to stay a few years, so when I experienced a lack of career development and was unsatisfied by management's response, I took that as an opportunity to start looking rather than digging in for a fight. If you want to remain in your company but want to see a change in your position, try being forthright with your manager about your frustrations. You can even go as far as sharing that you are looking at other opportunities. How this goes depends on the maturity of your management team so use your best judgement, and be prepared to actually leave if shit hits the fan. (my last post also touches on more techniques to progress your career wherever you are).

Without further tangents, here are my suggestions when looking for a new job, note that the process starts well before you even send out your first application.

Looking for a new Position

  • Keep track of what you like and don't like about your jobs. When you start looking for a job, use the list to identify what you want in a company.
  • Keep a list of achievements and use it to summarize your strengths and weaknesses.
  • Reflect on your goals, and what careers/technologies would help you further them.
    • Goals could be: supporting a family of 5, learning mobile development, or getting into crypto-currencies.
  • Come up with a target salary (including bonus and equity) based on what you see on sites like Glassdoor. Make sure to search by region and consider cost of living adjustments.
  • Generate questions that will help you understand if a company is the right place for you. Here are mine.
  • Brainstorm three former/current co-workers (preferably one manager) who can keep a secret and can be references for you.
  • Update your resume and LinkedIn profile.
  • Create a cover letter template, I found this infograph especially helpful for organizing and guiding my cover letter. It is originally from this post.
  • Compile a list of jobs that you really like based on the criteria above.
    • I used Glassdoor to filter on region, salary, job title and rating and then read the reviews for each job (yes it was time consuming). I definitely lost good companies based on the filters, but this gave me about 40 positions that I really liked.
    • There are plenty of other jobs sites to look at if you need to broaden your search.
    • Depending on your industry there may be many or few positions available and you will have to vary your search.
  • Start applying for jobs.
    • I like a sustained approach best, so I tried to apply to 2 jobs a day for a couple weeks, I definitely missed some days (I got about 15-20 apps out).
    • The preparation I did allowed me to spend an hour or two per app. All I had to do was fill in the template and send it in.
    • I wish I had exercised my network more at this step, after getting rejected from a position I discovered my friend knew the founder of the company and could have helped raise the profile of my application.
    • Sharing that you are looking for a job can be daunting, but it is not something to be shy about. Networking helps ease the process!
  • I tried to be low key at work about my job search, this created less drama for me and made the process easier.
  • You can also consider using an agent or a service like Triplebyte to help you get connected with jobs (full disclosure, the Triplebyte link has a referral code, if you use it and accept a job we will each get a benefit).
    • I didn't use any of these to find a job, but I did take a Triplebyte test to practice for Android interviews. In return I get incessant emails I haven't yet unsubscribed from :P


I only heard back from about six companies, two of which were rejections. Based on what I learned from friends and coworkers, this type of response rate is quite typical and not something to be concerned about. In other industries and geographic regions it can be even more brutal. Here are the key points for what comes next, the interviews.
  • Confidence is key.
  • Be humble.
  • Don't be afraid to control the schedule, recruiters will work with you to find a time for interviews. Make sure to pick times where you can be in a comfortable setting.
  • Communicate your schedule to the recruiters and give them updates as they happen.
  • Read a few online guides on prepping for interviews.
  • Read what the company does and about the people interviewing you. Then formulate a list of questions to ask them so you can inform your final decision.
    • After the interviews, you should walk away with an understanding of the technology, development process, culture, and work expectations. Feel free to add to this list based on your own needs and values.
  • Practice interview problems:
    • Design problems (these are normally on a white board and have to do with designing a system) You can see some here and here.
    • Programming problems (these are the algorithm ones from college).
    • Manager Interviews. Can you talk about your past experience, where you suffered, where you excelled, and how you grew? Make sure to look back over your experiences and be able to answer questions like "What were some challenges of working in X team? How did you resolve them?", "What did you do when things went awry in Y project?".

Making a Decision

Hopefully you (and the companies) do so well with the interviews that making a decision ends up being a challenge. Of the four companies I interviewed with, I received three offers. I decided to go with the one that seemed like the best cultural fit, got me closest to my family, and seemed like the best for my career growth (in exchange for a cut in equity). This is where that self discovery from the beginning of the process pays off as you will need to weigh the trade-offs of each company and determine which is the best fit for you.

While you are at it, remember that these companies have also invested a lot in you and are probably willing to trade off a little money to have a great team-member like you! Don't be afraid to ask for an offer you will be happy with, just make sure you can back-up the decision. I used Glassdoor as a reference, and had multiple offers to validate my requests.

Saying Good-bye

If you are at a good company then your manager and coworkers will be supportive of your decision and happy for you. Make sure to give at least a two week notice to your manager (in person and in writing) and create a plan to off-board your knowledge and responsibilities to other team-members. Don't be afraid to bring up all the subjects that are important to you. In my case, I talked about insurance and taking off a week before leaving to avoid losing vacation.

After you have your last date set with your manager, go ahead and tell your team. Don't forget to stay connected with them over LinkedIn and let them know when you are in the area so you can catch up! After all of that you can relax a bit, it's your last two weeks!


Post a Comment