I just finished reading the book Clean Architecture by Robert Martin. It’s not quite the book that I was expecting, but it helped me to refresh some useful software design principles.
So, when talking about architecture, just imagine working on a high-rise project, like the AON center in Chicago. It’s complicated. Not just effort paid in the design initially, but it does require a lot of work — putting bricks, steels, and concrete together and lift them high in the air. What makes “architecture” mean differently in the software world? It’s rarely a repeat of building the same thing over and over. Architecture in software are more or less a repeat of applying the same principles, but the output, each time, are different.
In term of Clean Architecture, it doesn’t have much to do with applying patterns. The book highlights the importance of decision making — starting from low-level all the way up to the high-level design, and eventually getting to the deferred decisions of details. Grouping items that have similar rate of changes. In a word, it’s the division that creates a clean architecture.