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;
- Chances Are, Your Biggest Problem Isn't Technical;
- Communication Is King; Clarity and Leadership, Its Humble Servants;
- Simplicity Before Generality, Use Before Reuse;
- For the End User, the Interface Is the System;
- It's Never Too Early to Think About Performance.
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.
This open book is licensed under a Creative Commons License (CC BY). You can download 97 Things Every Software Architect Should Know ebook for free in PDF format (6.2 MB).
Table of Contents
1
Don't put your resume ahead of the requirements
2
Simplify essential complexity; diminish accidental complexity
3
Chances are your biggest problem isn't technical
4
Communication is King; Clarity and Leadership its humble servants
5
Architecting is about balancing
6
Seek the value in requested capabilities
7
Stand Up!
8
Skyscrapers aren't scalable
9
You're negotiating more often than you think.
10
Quantify
11
One line of working code is worth 50
12
There is no one-size-fits-all solution
13
It's never too early to think about performance
14
Application architecture determines application performance
15
Commit-and-run is a crime.
16
There Can be More than One
17
Business Drives
18
Simplicity before generality, use before reuse
19
Architects must be hands on
20
Continuously Integrate
21
Avoid Scheduling Failures
22
Architectural Tradeoffs
23
Database as a Fortress
24
Use uncertainty as a driver
25
Scope is the enemy of success
26
Reuse is about people and education, not just architecture
27
There is no 'I' in architecture
28
Get the 1000ft view
29
Try before choosing
30
Understand The Business Domain
31
Programming is an act of design
32
Time changes everything
33
Give developers autonomy
34
Value stewardship over showmanship
35
Warning, problems in mirror may be larger than they appear
36
The title of software architect has only lower-case 'a's; deal with it
37
Software architecture has ethical consequences
38
Everything will ultimately fail
39
Context is King
40
It's all about performance
41
Engineer in the white spaces
42
Talk the Talk
43
Heterogeneity Wins
44
Dwarves, Elves, Wizards, and Kings
45
Learn from Architects of Buildings
46
Fight repetition
47
Welcome to the Real World
48
Don't Control, but Observe
49
Janus the Architect
50
Architects focus is on the boundaries and interfaces
51
Challenge assumptions - especially your own
52
Record your rationale
53
Empower developers
54
It is all about the data
55
Control the data, not just the code
56
Don't Stretch The Architecture Metaphors
57
Focus on Application Support and Maintenance
58
Prepare to pick two
59
Prefer principles, axioms and analogies to opinion and taste
60
Start with a Walking Skeleton
61
Share your knowledge and experiences
62
Make sure the simple stuff is simple
63
If you design it, you should be able to code it.
64
The ROI variable
65
Your system is legacy, design for it.
66
If there is only one solution, get a second opinion
67
Understand the impact of change
68
You have to understand Hardware too
69
Shortcuts now are paid back with interest later
70
"Perfect" is the Enemy of "Good Enough"
71
Avoid "Good Ideas"
72
Great content creates great systems
73
The Business Vs. The Angry Architect
74
Stretch key dimensions to see what breaks
75
Before anything, an architect is a developer
76
A rose by any other name will end up as a cabbage
77
Stable problems get high quality solutions
78
It Takes Diligence
79
Take responsibility for your decisions
80
Don't Be a Problem Solver
81
Choose your weapons carefully, relinquish them reluctantly
82
Your Customer is Not Your Customer
83
It will never look like that
84
Choose Frameworks that play well with others
85
Make a strong business case
86
Pattern Pathology
87
Learn a new language
88
Don't Be Clever
89
Build Systems to be Zuhanden
90
Find and retain passionate problem solvers
91
Software doesn't really exist
92
Pay down your technical debt
93
You can't future-proof solutions
94
The User Acceptance Problem
95
The Importance of Consommé
96
For the end-user, the interface is the system
97
Great software is not built, it is grown