Monday, October 21, 2019

Reading Company Engineering Blogs to Prepare for System Design Interviews

We've all been there, writing code on a whiteboard to solve algorithmic puzzles in tech interviews. These days, though, more interviewers and companies are recognizing the limitations of this interviewing style, particularly for mid-career and senior engineers: If you've been successfully building real-world systems but your last algorithms class was years or even a decade or more ago, inverting a binary tree (my personal favorite question to ridicule) may not be the best indicator of your skills.

Consequently, a question I get a lot deals with how to prepare for system design interviews. Traditional tech interview prep tools (think: Leetcode) are extremely weak in this area. But all is not lost. Indeed, many of the most-admired tech companies have lively engineering blogs where engineers describe how the real-world systems you use every day are built, and this is exactly the knowledge you need to succeed in an interview setting. And as an added bonus, unlike Leetcoding your life away, the time you spend studying system design translates directly into your day-to-day work.

Without further ado, allow me to list some of my favorite company engineering blogs, along with a hand-picked example post to get you on your way to tech interviewing success:

AirBnb: Avoiding Double Payments in a Distributed Payments System -- the benefits of idempotency in a microservices architecture and how to achieve them is a great interview question.

Facebook: Scribe: Transporting petabytes per hour via a distributed, buffered queueing system -- since we're all familiar with logging, log data collection is a ripe target in an interview.

Lyft: Building Lyft’s Marketing Automation Platform -- this one is just near-and-dear to my heart as someone who has worked in the domain.

Netflix: How Netflix microservices tackle dataset pub-sub -- Netflix is the gold standard for sharing details (and open source) of their innovative modern microservices architecture. Every minute you spend on their blog is time well spent.

Twitter: Dynamic configuration at Twitter -- hot reloading, feature switches, A/B testing support, etc.

Uber: Using GraphQL to Improve Data Hydration in our Customer Care Platform and Beyond -- build an efficient frontend to a microservices backend with GraphQL.

Best of luck to you!