Just finished reading Clean Code. My immediate impression is that it is not one of the most useful books on software design I have read.
The problem I have with books like Refactoring, Design Patterns and Clean Code is, that they tend to be a list of solutions for you to memorize - but what I want to learn as a developer is how to arrive at these solutions on my own.
Reading such books feel like learning math by memorizing the solutions to lots of math problems, rather than learning how to solve math problems in general.
In other words, I want to learn "Design Thinking" - not memorize "Design Solutions".
Of course you can learn some level of design thinking by studying design solutions - but you do so retroactively. You might discover what the design thinking behind a solution was, and be able to reuse that reasoning in another situation.
But - I would prefer to be taught the design thinking (reasoning) explicitly - and then discover what solutions that thinking leads to when applied.
This is what I am trying to address with my ideas of Conscious Software Design and Compositional Design.
Another issue with these older books is, that they tend to talk in terms of "right" and "wrong" - or "good" and "bad". It feels too much like there is always "one best solution".
In practice, however, all design decisions are contextual trade-offs. No single design is always the best solution in all situations. Therefore, as a software designer I find it more useful to learn the reasoning that goes into coming up with different design solutions to the same problem in general - and to study the pros and cons of these solutions so I can make an educated judgement about what set of pros and cons best fit my current situation.
#SoftwareDesign #SoftwareDevelopment #SoftwareEngineering #CleanCode #ConsciousSoftwareDesign #CompositionalDesign