Table of Contents
Preface; Permissions; How to Contact Us; Safari® Books Online; Acknowledgments; Chapter 1: Don't Put Your Resume Ahead of the Requirements; Chapter 2: Simplify Essential Complexity; Diminish Accidental Complexity; Chapter 3: Chances Are, Your Biggest Problem Isn't Technical; Chapter 4: Communication Is King; Clarity and Leadership, Its Humble Servants; Chapter 5: Application Architecture Determines Application Performance; Chapter 6: Seek the Value in Requested Capabilities; Chapter 7: Stand Up!; Chapter 8: Everything Will Ultimately Fail; Chapter 9: You're Negotiating More Often Than You Think; Chapter 10: Quantify; Chapter 11: One Line of Working Code Is Worth 500 of Specification; Chapter 12: There Is No One-Size-Fits-All Solution; Chapter 13: It's Never Too Early to Think About Performance; Chapter 14: Architecting Is About Balancing; 14.1 ; Chapter 15: Commit-and-Run Is a Crime; Chapter 16: There Can Be More Than One; Chapter 17: Business Drives; Chapter 18: Simplicity Before Generality, Use Before Reuse; Chapter 19: Architects Must Be Hands On; Chapter 20: Continuously Integrate; Chapter 21: Avoid Scheduling Failures; Chapter 22: Architectural Tradeoffs; Chapter 23: Database As a Fortress; Chapter 24: Use Uncertainty As a Driver; Chapter 25: Warning: Problems in Mirror May Be Larger Than They Appear; Chapter 26: Reuse Is About People and Education, Not Just Architecture; 26.1 ; Chapter 27: There Is No 'I' in Architecture; Chapter 28: Get the 1,000-Foot View; Chapter 29: Try Before Choosing; Chapter 30: Understand the Business Domain; Chapter 31: Programming Is an Act of Design; Chapter 32: Give Developers Autonomy; Chapter 33: Time Changes Everything; 33.1 ; Chapter 34: "Software Architect" Has Only Lowercase a's; Deal with It; Chapter 35: Scope Is the Enemy of Success; Chapter 36: Value Stewardship Over Showmanship; Chapter 37: Software Architecture Has Ethical Consequences; Chapter 38: Skyscrapers Aren't Scalable; Chapter 39: Heterogeneity Wins; Chapter 40: It's All About Performance; Chapter 41: Engineer in the White Spaces; Chapter 42: Talk the Talk; Chapter 43: Context Is King; Chapter 44: Dwarves, Elves, Wizards, and Kings; Chapter 45: Learn from Architects of Buildings; Chapter 46: Fight Repetition; Chapter 47: Welcome to the Real World; Chapter 48: Don't Control, but Observe; Chapter 49: Janus the Architect; Chapter 50: Architects' Focus Is on the Boundaries and Interfaces; Chapter 51: Empower Developers; Chapter 52: Record Your Rationale; Chapter 53: Challenge Assumptions—Especially Your Own; Chapter 54: Share Your Knowledge and Experiences; Chapter 55: Pattern Pathology; Chapter 56: Don't Stretch the Architecture Metaphors; Chapter 57: Focus on Application Support and Maintenance; Chapter 58: Prepare to Pick Two; Chapter 59: Prefer Principles, Axioms, and Analogies to Opinion and Taste; Chapter 60: Start with a Walking Skeleton; Chapter 61: It Is All About The Data; Chapter 62: Make Sure the Simple Stuff Is Simple; Chapter 63: Before Anything, an Architect Is a Developer; Chapter 64: The ROI Variable; Chapter 65: Your System Is Legacy; Design for It; Chapter 66: If There Is Only One Solution, Get a Second Opinion; Chapter 67: Understand the Impact of Change; Chapter 68: You Have to Understand Hardware, Too; Chapter 69: Shortcuts Now Are Paid Back with Interest Later; Chapter 70: "Perfect" Is the Enemy of "Good Enough"; Chapter 71: Avoid "Good Ideas"; Chapter 72: Great Content Creates Great Systems; Chapter 73: The Business Versus the Angry Architect; Chapter 74: Stretch Key Dimensions to See What Breaks; Chapter 75: If You Design It, You Should Be Able to Code It; Chapter 76: A Rose by Any Other Name Will End Up As a Cabbage; Chapter 77: Stable Problems Get High-Quality Solutions; Chapter 78: It Takes Diligence; Chapter 79: Take Responsibility for Your Decisions; Chapter 80: Don't Be Clever; Chapter 81: Choose Your Weapons Carefully, Relinquish Them Reluctantly; Chapter 82: Your Customer Is Not Your Customer; Chapter 83: It Will Never Look Like That; Chapter 84: Choose Frameworks That Play Well with Others; Chapter 85: Make a Strong Business Case; Chapter 86: Control the Data, Not Just the Code; Chapter 87: Pay Down Your Technical Debt; Chapter 88: Don't Be a Problem Solver; Chapter 89: Build Systems to Be Zuhanden; Chapter 90: Find and Retain Passionate Problem Solvers; Chapter 91: Software Doesn't Really Exist; Chapter 92: Learn a New Language; Chapter 93: You Can't Future-Proof Solutions; 93.1 ; Chapter 94: The User Acceptance Problem; Chapter 95: The Importance of Consommé; Chapter 96: For the End User, the Interface Is the System; Chapter 97: Great Software Is Not Built, It Is Grown; Colophon;