[4/5] Clean design (Tidy First?) (Category Architecture)
Continuing posts (1, 2 and 3) About the book "Clean Design" I will tell about the last part, in which the author shares his theoretical researches that allow you to gain intuition in making decisions regarding the design of software. Here the author discusses the questions
- What is software design? How does design affect the development and operation of software and vice versa? Is it worth investing in the development of software structure and what will it lead to?
- What principles? (economic and humanitarian) Can it be used to make decisions about changing the software structure?
And this is what I learned from that part.
- Mutually beneficial relationship between elements (benecially relating elements) In fact, this is the definition of software design from the author, which is concise and interesting. In fact, the definition gives the main parts: elements, relationships and mutual benefit between them. And designers are the ones who make sure that relationships are mutually beneficial.
- Structure and behaviour (structure and behavior) The value of code is what it can do right now. (behavior)and what he can do tomorrow. (structure). Behavior can be characterized in two ways: the input/output pairs and the invariants that persist during system changes. Structure doesn’t directly affect behavior, but it does affect how easy it is for us to modify the system one way or another. Changes in behavior are visible immediately, but changes in structure are difficult to measure, so they are often postponed.
- Economics: value over time and variability (economics: time value and optionality) The author describes the nature of money: A dollar today is worth more than a dollar tomorrow, so you need to earn earlier - here you can look at discounted cash flows and NPV. In a situation of chaos, variability is better than unambiguity, so in the face of uncertainty, create options As a result, the author sees the task of design as aligning the imperatives of “earning earlier / spending later” (behavior) and "create variability, not unambiguity" (structure).
- A dollar is worth more today than a dollar tomorrow. (a dollar today > a dollar tomorrow) Finger story about discounting cash flows
- Variability (options) The Goldilocks Dilemma, where we shouldn’t have too much design or too early, but we shouldn’t have too little design or too late. Then comes the concept of options, where we pay money now to buy something in the future. As a result, the design we know today is an “optional premium” that we pay by “buying” changes in program behavior in the future.
- Options and cash flows (options versus cash flows) Here the author explains how to make cleaning decisions (tidying) Based on our knowledge of options. At the same time, the thesis is that software design is about building relationships with people, and cleaning is about relationships with yourself:) Counting the entire economy to clean up is often costly, but we train when making decisions about it. The habit of reading factors that affect the time and scope of a design Skills to build relationships with people
- Reversible structural changes (reversible structure changes) Structural changes are usually reversible, but changes in behavior lead to side effects that we cannot always roll back. (conditionally, sending the wrong messages to the wrong people). In the end, you need to work with varying degrees of care with reversible and irreversible changes. (This is similar to one-way door and two-way door decisions. described Jeff Bezos)
In the next post, I will talk about the remaining parts of the theory and about the literature that the author advises to study.
#Architecture #Software #SystemDesign #Management #Leadership #SoftwareArchitecture