Software Memes

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 it
  • Murphy's law: whatever can go wrong, will go wrong
  • Parkinson'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/