Recommended Software Engineering Resources

My target audience for this page is a software engineer or manager who has two goals:

  1. Prepare for system design interviews
  2. Get better at designing software systems (for their job, personal projects, or otherwise)

I am not trying to give a holistic, general review of any books on this page. Rather I am trying to give a focused review from the perspective of a practitioner who's trying to get value out of these resources towards the two goals above.

Table of Contents permalink

Books permalink

Designing Data-Intensive Applications (2nd ed.) permalink

Designing Data-Intensive Applications cover

I've looked at a lot of sources for learning system design now, and DDIA almost universally comes up as a recommended resource.

It has some chapters (particularly the early ones) that are high-level enough to be suitable for learning system design. Below is my summary of the most valuable chapters and content in those chapters. Beside each chapter is a star rating for how useful it is.

Here they are:

It covers every aspect of handling data, which is a large and critically important part of system design, but it doesn't cover everything to do with system design. For example, it does not cover API design.

System Design Interview (vol. 1) permalink

System Design Interview cover

Websites permalink

System Design Primer permalink

System Design Primer is a great resource. It's very wide in scope and offers links for depth. My favourite parts are the table of real-world architectures and the table of engineering blogs.

roadmap.sh permalink

roadmap.sh is a website that gives you a high level visual "roadmap" for learning a particular area, such as backend. I find having a high-level view really helpful since I can quickly scan through and see what I know and what I don't. You can click on the items you want to learn about and read a short explanation, with a few links to deeper dives if you need.

Tools permalink

Anki permalink

Anki is flash card software. You can download clients for desktop and mobile, but you can also just access via a browser on ankiweb.net. Anki is how I made sure I could actually recall what I was learning, days, weeks, or months later. Use the other resources to learn, use Anki to make it stick.

I recommend creating your own flash cards as you study the other resources. The act of writing your own cards helps you learn the material. A few tips for creating cards that you'll actually stick with:




Date Revision
2026-06-13 Remove motivation paragraph. Add Anki section. Add roadmap.sh section. Add revisions table. Added bullets for System Design Interview vol 1
2026-05-02 Initial revision