Home > Work > Clean Architecture
1 " All race conditions, deadlock conditions, and concurrent update problems are due to mutable variables. "
― Robert C. Martin , Clean Architecture
2 " Database schemas are notoriously volatile, extremely concrete, and highly depended on. This is one reason why the interface between OO applications and databases is so difficult to manage, and why schema updates are generally painful. "
3 " the fact that oo languages provide safe and convenient polymorphism means that any source code dependency, no matter where it is, can be inverted "
4 " The only way to go fast, is to go well. "
5 " I'm a programmer. I like programming. And the best way I've found to have a positive impact on code is to write it. "
6 " The component structure cannot be designed from the top down. It is not one of the first things about the system that is designed, but rather evolves as the system grows and changes. "
7 " Any organisation that designs a system will produce a design whose structure is a copy of the organisation's communication structure "
8 " Dijkstra once said, “Testing shows the presence, not the absence, of bugs.” In other words, a program can be proven incorrect by a test, but it cannot be proven correct. All that tests can do, after sufficient testing effort, is allow us to deem a program to be correct enough for our purposes. "
9 " Good architecture makes the system easy to understand, easy to develop, easy to maintain, and easy to deploy. The ultimate goal is to minimize the lifetime cost of the system and to maximize programmer productivity. "
10 " But there are different kinds of duplication. There is true duplication, in which every change to one instance necessitates the same change to every duplicate of that instance. Then there is false or accidental duplication. If two apparently duplicated sections of code evolve along different paths—if they change at different rates, and for different reasons—then they are not true duplicates. Return to them in a few years, and you’ll find that they are very different from each other. "
11 " Science does not work by proving statements true, but rather by proving statements false. "
12 " Just as the Hare was overconfident in its speed, so the developers are overconfident in their ability to remain productive. "
13 " What if your company has made a commitment to a certain database, or a certain web server, or a certain framework? A good architect pretends that the decision has not been made, and shapes the system such that those decisions can still be deferred or changed for as long as possible.A good architect maximizes the number of decisions not made. "
14 " Another problem with service-level decoupling is that it is expensive, both in development time and in system resources. Dealing with service boundaries where none are needed is a waste of effort, memory, and cycles. And, yes, I know that the last two are cheap—but the first is not. "
15 " This is the monstrosity in love, lady, that the will is infinite, and the execution confined; that the desire is boundless, and the act a slave to limit. —William Shakespeare "
16 " The first value of software—behavior—is urgent but not always particularly important. The second value of software—architecture—is important but never particularly urgent. "
17 " Architecting for the enterprise, when all you really need is a cute little desktop tool, is a recipe for failure. "
18 " 1. “First make it work.” You are out of business if it doesn’t work. 2. “Then make it right.” Refactor the code so that you and others can understand it and evolve it as needs change or are better understood. 3. “Then make it fast.” Refactor the code for “needed” performance. "
19 " If you think good architecture is expensive, try bad architecture. —Brian Foote and Joseph Yoder "
20 " The architecture of a software system is the shape given to that system by those who build it. The form of that shape is in the division of that system into components, the arrangement of those components, and the ways in which those components communicate with each other.The purpose of that shape is to facilitate the development, deployment, operation, and maintenance of the software system contained within it.The strategy behind that facilitation is to leave as many options open as possible, for as long as possible "