A collection of memes and quick thoughts about software, development and architecture:
Architecture – Technical
- Demonstration defeats discussion
- There Is No One-Size-Fits-All Solution
- think about performance early
- software architecture is about balancing between technical activities and business requirements
- IT and business are like rings on a change. Business is the first ring but then they are inter-twined.
- Simplicity Before Generality, Use Before Reuse
- Architect leads technical meetings
- Architects are like pilots that at times seem like doing nothing but is watchful
- If schedule is to be shortened, cut non critical functionalities instead of cutting corners affecting the quality e.g. not doing unit tests.
The vasa ship
story: The ship’s architect, in an attempt to fulfill all of the king’s wishes, created an unbalanced and unstable ship.- The first rule of architecture is that Architecture is a trade off. See Architecture Tradeoff Analysis Method (ATAM) and the Cost Benefit Analysis Method (CBAM).
- When you have two option that indicates uncertainty. Use the uncertainty as a driver to determine where you can defer commitment to details and where you can partition and abstract to reduce the significance of design decisions
- Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change
- Architects are well connected
- Architect is responsible for the quality of the project and have authority
- Get ready now for what you want to be in 5 years
- Architecture decision registrar is more useful than SAD. It contains why instead of how.
- Assumption is the mother of all screw-ups.
- Don’t assume — it makes an ‘ass’ of ‘u’ and ‘me’
- The act of discussing something always helps to show its weaknesses.
- If you find yourself trying to shoe-horn your favorite patterns into a problem space where they don’t apply, you may be a victim of
pattern pathology
- Don’t fall in love with your
system metaphor
— only use it for exploratory communication purposes, and don’t let it turn on you. - Involve ops early in the dev cycle
- RACI matrix – Responsible, Accountable, Consulted, and Informed https://en.wikipedia.org/wiki/Responsibility_assignment_matrix
- Architects always start with customer
- Defer some decisions to later. This is called
Last responsible moment
. It’s is good because you make a decision when you know more about it Manson's Law of Avoidance
: The more something threatens your identity, the more you will avoid doing itMurphy's law
: whatever can go wrong, will go wrongParkinson's law
: work expands so as to fill the time available for its completion- Fast is not a requirement because you cannot measure it. Quantify your requirements
Architecture – Non-Technical
- Keep challenging directly and show you care personally
- As an architect you have to explains things in very simple terms
- As you step back from people management you have to take more technical leadership and have a stronger voice within the engineering team
References
- Neal ford – http://nealford.com/
- Chris Richardson
- Gregor Hohpe
- Kim Scott – https://www.radicalcandor.com/