Share E-Book
Scan to open this page

Scan with your phone to open this page

Author: Srinath Perera

Rating No ratings yet

Leverage leadership knowledge to make better software architecture decisions. Think deeply but implement slowly. The overarching goal of software systems (hence, for software architecture) is to build systems that meet quality standards and that provide the highest return on investment (ROI) in the long run or within a defined period of time. A great product requires a combination of technology, leadership, and product management (including UX). Leadership is primarily about managing uncertainty and making the right judgment. To build great products, technical leaders need to combine technology, leadership, and product management knowledge, and make the right decisions. Many technical mistakes come from the gap between knowledge about these three items and judgment. In Software Architecture and Decision-Making, Srinath Perera explains principles and concepts that software architects must understand deeply and how to employ those principles to manage uncertainty. The questions and principles discussed in this book help manage uncertainty while building software architecture and provide a framework for making decisions. This book is for all technical leaders in the software industry who make holistic judgments about the systems they build and for future leaders learning the craft.

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A practical guide for technical leaders who must make architecture decisions under uncertainty, combining technology, product management, and leadership judgment. Read it if you design systems, lead engineering teams, or want to move from knowing concepts to making sound calls. 【Book Arc】 - **Opening (~0%–10%)**: Frames the core problem—architecture is not just technical but a leadership challenge of managing uncertainty. Introduces the goal of maximizing long-term ROI and the gap between knowledge and judgment. - **Early (~10%–30%)**: Lays out seven overarching principles, from driving design from the user's journey to absorbing risk and understanding cohesion/flexibility trade-offs. Uses an online bookstore as a running example. - **Middle (~30%–50%)**: Dives into performance mental models—I/O costs, context switching, Amdahl's law, queuing—and how to build an intuitive feel for latency and throughput. Also covers UX principles for APIs and interfaces. - **Late (~50%–80%)**: Moves into building stable systems: handling known and unknown errors, observability, graceful degradation, and common bugs like deadlocks and resource leaks. (Excerpts do not cover this range in detail.) - **Ending (~80%–100%)**: Focuses on building and evolving systems—getting basics right, communicating design, demanding excellence, and learning from users to improve over time. (Excerpts do not cover this range in detail.) 【Key Takeaways】 - **Architecture is a leadership discipline, not just a technical one** (Opening): The central argument is that most architectural mistakes stem from uncertainty about users, system behavior, and evolving requirements—problems that require judgment, not just knowledge. - **The overarching goal is long-term ROI** (Early): Systems should meet quality standards while maximizing return over time; cheaper short-term choices often cost more later. - **Seven principles provide a decision framework** (Early): Drive from user journey, use iterative thin slices, add value with least effort, make decisions and absorb risk, design deeply but implement slowly, eliminate unknowns early, and balance cohesion with flexibility. - **Design deeply, implement slowly** (Early): Invest in hard-to-change elements like APIs and message formats, but delay implementation of features until you have evidence they are needed. - **Match architecture to your team's actual skill level** (Early): Do not adopt complex patterns like CQRS or event-driven architecture without people who have done it before; use proof of concepts to build capability gradually. - **Performance limits are architectural** (Middle): Mental models—I/O hierarchy, context switching, Amdahl's law, queuing—explain why systems lag even when CPU is idle, and most fixes require architectural changes. - **Abstractions and reuse have costs** (Early): Interfaces create options but also overhead; excessive abstraction layers hurt performance, and forced reuse across teams can create more complexity than duplication. - **Stability requires handling both known and unknown failures** (Late): Observability, graceful degradation, and testing are presented as core architectural concerns, not afterthoughts. 【Reading Tips】 - **Deep-read the early principles chapters**: The seven principles and the online bookstore example are the book's backbone; they recur throughout and are worth understanding thoroughly. - **Skim the performance chapter on first pass, then return**: The author explicitly says this chapter is more technical and detailed than others; a quick read followed by a deeper revisit works well. - **Focus on judgment over memorization**: The book's value is in how it frames decisions under uncertainty, not in prescriptive formulas—read for the reasoning, not just the conclusions. - **Use the leadership considerations sections**: Each chapter ends with leadership reflections; these connect technical choices to team and organizational realities. - **Take away the trade-off mindset**: The recurring theme is that every architectural choice has costs and benefits—practice identifying those trade-offs in your own systems. 【Coverage Limits】 This guide is based on stratified excerpts covering roughly the first half of the book in detail, with later chapters on stability and system evolution only partially represented. Specific techniques, case studies, and chapter-level arguments from the second half are not fully covered.
Page 6
ume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use o...
View in text
Excerpt 2
ey might handle the system without any help from you at all. However, leadership is needed when we work with less- than-perfect teams. You go to war with the...
View in text
Excerpt 3
ered. It also includes returns and any after-sales services. This example will show us how to use the concepts mentioned in After identifying the abstract ar...
View in text
Excerpt 4
g theory that latencies highly correlate with queue lengths. Therefore, we can control the average latency by monitoring queue lengths and applying back pres...
View in text
Excerpt 5
ibuted object framework that enables users to create remote objects that can be instantiated, discovered, invoked, managed, and destroyed. CORBA supports tim...
View in text
Excerpt 6
ding and managing the employee lifecycle can be complicated. This effort may include provisioning accounts and managing processes related to the accounts acr...
View in text
Excerpt 7
ttacks, which are designed to render a service inaccessible. Using firewalls can solve DoS problems to some extent, but it is difficult if not impossible to...
View in text
Excerpt 8
ons that involve two users who are placed in two partitions. Banks often update the balance at the end of the day, so we collect transactions and asynchronou...
View in text
Tags
AI categories
SoftwareTechnologyProgramming
Publisher: Addison-Wesley
Publish Year: 2024
Language: English
Pages: 270
File Format: PDF
File Size: 3.2 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…