System Design: Final Advice

In this section we’ll discuss how to prepare and give some final advice for the system design interview. Let’s get right to it.

Internalize the phases of the interview

Try to schedule 2-3 practice interviews, and note how you do on each of the phases -- Functional Spec, Technical Spec, Going Deep. Ask for feedback and evaluate. The more you do this, the more comfortable you'll be driving the interview. However, as you go through this, you'll notice areas you know less well.

Start filling those gaps

Through your practice, you may have noticed, for example, that you don't know concurrency models too well, or maybe you realize you have less experience building real-time systems. Note those areas, and make a plan to improve. In the homework, we’ve included a few ideas and book recommendations, to get better in some of the key system design areas. Go deeper there, and not only will you improve your interview performance, but you’ll truly improve as an architect. With that, you know the steps, and you have a plan to improve.

One more thing

There are many, many pieces here that you may not know well.. Remember it’s normal not to know a lot of this. To perform flawlessly here -- going all the way to the extra mile -- it's expected that you'll have years of experience building systems in production.

Interviewers are trained to expect that candidates will need to be prodded and challenged. For example, if you only have a few years of experience, it is normal that you will need prodding, and won’t know some of the tradeoffs in larger systems. Be kind to yourself throughout this, focus on your strengths, and get excited about learning.

Now you’re ready for the system design interview, here’s to becoming a great architect!

Homework

  1. Schedule at least 2 system design interviews. Reach out to senior engineer friends or mentors who could connect you with senior engineers. Ideally you want someone who has experience interviewing others on system design. Make sure you get a sense of the interview flow, and ask for feedback. By the end of the practice interviews, you should have a sense of the areas you are weak in.
  2. To learn these areas, and make a study plan. Some suggestions
    • Learn more about real large-scale production systems, watch InfoQ videos: Some examples: Pinterest, Dropbox, and Twitter
    • Check out some Rich Hickey Talks
    • To learn about databases, get the book “7 databases in 7 weeks”
    • To learn about concurrency models, to get the book “7 concurrency models in 7 weeks”