You are previewing 97 Things Every Software Architect Should Know.
O'Reilly logo
97 Things Every Software Architect Should Know

Book Description

In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:

  • Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)

  • Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)

  • Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)

  • Simplicity Before Generality, Use Before Reuse (Kevlin Henney)

  • For the End User, the Interface Is the System (Vinayak Hegde)

  • It's Never Too Early to Think About Performance (Rebecca Parsons)

To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.

Table of Contents

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