Graduate Program KB

Clean Architecture

Chapter 2 - A tale of two values

  • Developers must maintain two values, behaviour and structure

  • Behaviour requires developers to develop a functional specification / document and implement it, either saving or making money for stakeholders

  • Structure / architecture refers to the structure of the software and its adaptability to changes

  • Stakeholders think they provide a stream of changes of similar scope, a developer thinks they have to fit a stream of jigsaw pieces into a puzzle of increasing complexity

    • The required changes are hard to implement because the shape of the system does not match the shape of the request
  • There should be more priority for a system to adapt than for it to work

    • If a system can't change but it works, it will become obsolete with future requirements
    • If a system is adaptable but doesn't work, it can be updated as requirements change

Eisenhower's matrix

  • The urgent are not important, and the important are never urgent

    • Behaviour is urgent but not particularly important
    • Architecture is important but never particularly urgent
  • Priorities:

    • Urgent and important
    • Not urgent and not important
    • Urgent and not important
    • Not urgent and not important

Fight for the architecture

  • Developers have a responsibility to assert the important of architecture over the urgency of features
  • The developer should provide expertise and their judgement to stakeholders
  • It's a necessary struggle