Monday, August 25, 2025

Tachyon Book Club - Designing Data-Intensive Application - Chapter 1


I decided I need to revisit this highly ranked and indispensable software engineering book. I'll share insights and questions chapter by chapter. 

The first chapter introduces the three big ideas that run through the book: Reliability, Scalability, and Maintainability. These three answer the question of what is the difference between a coder (or vibe coder) and a software engineer. The answer is that the software engineer creates a product that is reliable, scalable, and maintainable. 

Reliable, Scalable, and Maintainable

A reliable application will be tolerant to hardware faults, software faults, and human errors. All of which are unavoidable. What happens when these errors occur? Are they detected? Is someone notified? Does the software fail in the least disastrously way? Do errors cause the business to lose money or to be liable to legal action? 

A scalable application will be able to handle increased loads or react in a safe way. How is the load being monitored? Should performance  be measured as response times or as throughput? Are there SLA's (Service Level Agreements) or SLO's (Service Level Objectives) at risk of being violated? Can the application handle twice as much business without having to be re-written or put on expensive infrastructure? 

A maintainability application can have features added and bugs fixed without taking forever and costing an entire budget. Most of the maintenance tasks should be able to be performed by junior engineers with a little help and guidance. 

Engineering


Engineering is the ongoing conquest of complexity. It is an engineer's job to reduce complexity or at least not make it worse. 

Throughout my career I have seen countless hours wasted and engineers burnt out by code that was needlessly complex and opaque. 

When I and other senior engineers join a project, these three concepts, along with documentation and security, is how we judge is an application is well written or not. Next step is talking with Users and Product to determine pain points and overall experience. Make a wish list of things to fix, level of effort, and cost/benefit. Identifying high impact / easy wins is the role of an experienced engineer. Senior engineers should not just be people who have been junior engineers for a long time. Senior engineers need to be able to use their experience and lessons learned to create business value. 

Conclusion


That's the biggest value of this book to me, it's not a cookbook but a way to level up and take your career to the next step. This is why I decided to re-read this book and why I decided to make it the first book to be featured for this book club. 

No comments:

Post a Comment

Clock Web App

 If you have been following the blog, you know I created my own clock using LED strips and an ESP32. The clock runs an HTTP server for progr...