Preface
Software Engineering is not just about shipping code faster. It’s a lifecycle of well-thought-out design, implementation, launch, and then iterating over this lifecycle again and again. Writing code is becoming easier day by day with evolving GenAI tools. The difficulty is decision-making over system design. One has to clearly think on system requirements, scope, cost, and scale to purpose a design and then iterate over it.
System design is the art of planning how software can support one user, 100 users, 10,000 users, and millions of users. The role of this book is to not act as a consultant giving recommendations, but as a fellow engineer working on the problem statement piece by piece and developing an understanding of system design from scratch.
The most valuable thing you can make is a mistake, you can’t learn anything from being perfect.
Adam Osborne
The subtitle of the book is ‘Iterating from small to large-scale distributed systems’. This book starts with a simple proof of concept supporting 10-100 users. As the product gets more traction, we iterate over the design, performing trade-off analyses at every stage and understanding the different concepts required, including scaling, compute, databases, load balancing, managing software engineering systems, and how AI fits into all of this, either as an assistant or as a component of the system.
Reading and trying to understand system design concepts one-by-one can be tiresome, and you can forget over time. When ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access