
Ask HN: Any good books on system design interviews? - estomagordo
I&#x27;m looking for books specifically, as I&#x27;m already familiar with plenty of good online resources.<p>I&#x27;m also looking for books specifically centered on interviews for companies such as Google or Amazon.<p>There are a few good books on the coding interviews, perhaps most notably Cracking the coding interview. But I have yet to come across a book that deals with system design and is also lauded.
======
joshvm
The premise of a system design interview is ridiculously broad. You could
spend half an hour talking about how to scale a system or design at a very
high level; or it could be an excuse to get you to mock-up an API or to talk
about some useful algorithm. You can and should expect to write code, but then
again maybe you won't have to. It's a lucky dip question.

There are books which are tangentially useful, eg _Designing Data Intensive
Applications_ or _Site Reliability Engineering_. Even if you're not going for
SRE, it's good to understand the problems that are involved with high
availability.

Having a good overview of something like _Code Complete_ is useful, if only
because it has generic advice for designing large programs.

For case studies I don't think books are any good. Watch conference talks and
read the company dev blogs.

------
TheAceOfHearts
I'll mimic what others are saying by saying that Designing Data-Intensive
Applications is a superb book which you absolutely should read.

As for my second suggestion, I'll tell you one of the ways in which I go about
researching certain kinds of programming topics. I pay for a Safari Books
Online subscription [0], which lets me browse a massive amount of technical
books without restrictions. Once I figure out the appropriate keywords, I'll
perform a search and open all the relevant books in separate tabs. Then I
filter the list down by looking through the index, or reading through a couple
pages, to see if it actually covers what I'm looking for. By the time I've
prepared this reduced list I usually have an idea of which books seem most
interesting, and those are usually the ones I start with. Then it's just a
matter of working my way through the list until satisfied. It has been my
experience that most technical books are not worth reading cover-to-cover, so
I just read through the few relevant chapters and move on. As with all things,
there's definitely exceptions; I'd actually consider Designing Data-Intensive
Applications one such example.

If you get a card from your local library you might also be able to get access
to Safari Books Online for free, as well as tons of other resources. Although
with my library card I only get access to a limited subset of their books,
instead of the whole collection like with the paid subscription.

Another option, if you can't afford to spend that much money, is to just
pirate a bunch of books or look em up on Google Books [1] in order to identify
the ones which interest you the most, and then buy the ones that look useful,
or try borrowing em from your local library (most likely through interlibrary
loans). The market for technical books isn't very big and great authors are
rare, so I think it's incredibly important that they be adequately compensated
for their hard work, though. If you really can't afford to buy the books
initially, be sure to at least keep track of the list so you can make the
purchase after you've gotten your new job.

[0] [https://www.safaribooksonline.com/](https://www.safaribooksonline.com/)

[1] [https://books.google.com/](https://books.google.com/)

------
sbmthakur
I second Designing Data-Intensive Applications: The Big Ideas Behind Reliable,
Scalable, and Maintainable Systems. Rather than covering theoretical aspects
in detail, it focuses on real-life problems that can be solved using various
paradigms.

[https://www.amazon.com/Designing-Data-Intensive-
Applications...](https://www.amazon.com/Designing-Data-Intensive-Applications-
Reliable-Maintainable/dp/1449373321)

------
hkarthik
Not a book, but this is an excellent resource on how top engineering talent in
FANG approaches System Design.

[https://www.educative.io/collection/5668639101419520/5649050...](https://www.educative.io/collection/5668639101419520/5649050225344512)

Even after interviewing, I found it useful when thinking about designing for
large scale growth.

------
rahimnathwani
I really like 'Web Scalability for Startup Engineers':
[https://www.amazon.com/Scalability-Startup-Engineers-
Artur-E...](https://www.amazon.com/Scalability-Startup-Engineers-Artur-
Ejsmont/dp/0071843655)

I haven't read 'Designing Data-Intensive Applications' yet, so not sure how
much overlap there is or which one is better. But, according to Amazon.com,
they're 'frequently bought together'.

------
deepaksurti
If I had to appear for such an interview, I would read: The Architecture of
Open Source Applications[0]

[0] [http://aosabook.org/en/index.html](http://aosabook.org/en/index.html)

------
tex0
Both of the Google SRE books contain some chapters on this. I can highly
recommend both of them.

------
thorin
[https://www.amazon.com/CRACKING-DESIGN-INTERVIEWS-Step-
Step-...](https://www.amazon.com/CRACKING-DESIGN-INTERVIEWS-Step-Step-
ebook/dp/B077GVMP65)

~~~
estomagordo
The Amazon reviews are very divided. What did you like best about this book?

~~~
thorin
I didn't love it, but if you want a book about system design interviews this
is probably your number one choice. Personally I think you'd be fine just with
reading article like Martin Fowler's or if you work with Microsoft their
documentation has suddenly improved a lot in this area especially in the area
of cloud/micro services.

