Life’s been pretty full recently, but I wanted to write this before too much time had passed since my job hunt. One of the things that seems key to The Silicon Valley Technical Interview Process™ is live-coding on a whiteboard (or in an editor) during interviews, and I wanted to prepare well.
I first found out about Advent of Code (created by Eric Wastl) through colleagues at a former job. Advent of Code is an Advent Calendar of coding problems, where there’s a new 2-part coding problem posted for the first 25 days of December. There’s also a competitive element to it, since there’s a global leaderboard and private leaderboards that you can set up with friends. Since Advent of Code and my job search happened at the same time, I figured I’d integrate it into my preparation.
Advent of Code was the first time I was motivated to solve problems about trees, graphs, networks, and spiral codes. Not having studied Computer Science in school, I’d read about some of these concepts and seen toy problems in different articles and textbooks, but never wanted to sit down and work through them. Being part of a couple private leaderboards helped the competitive side of me, and the story-like presentation of the problems helped
When I got stuck, it was helpful to have an entire community of people working on the same problem at approximately the same time. I’d go on reddit to see how others were solving the problem, or trade hints with friends in my Slack communities. Sometimes, I’d read others’ code, to learn more about how they conceptualized and thought of the problem. Working in Python, I found Ned Batchelder’s code particularly helpful.
Finally, I was motivated to streamline my setup/problem-solving workflow, since I found myself writing similar setup code (how I was going to read in the input, how I would test my code, etc.) for each problem. After doing slightly different variations for a couple days, I settled on a structure
Moving this into the “background” of my mind helped me settle on a way of tackling problems that I found myself using during interviews.
I didn’t finish Advent of Code last year, but look forward to participating (and hopefully completing) all the problems this year! I might even go back and try to complete the problems I skipped from previous years.