The Clean Architecture



The Clean Architecture - Note 1

Not only does a good architecture meet the needs of its users, developers, and owners at a given point in time, but it also meets them over time

The Clean Architecture - Note 2

You think good architecture is expensive, try bad architecture. —Brian Foote and Joseph Yoder

The Clean Architecture - Note 3

Architecture is a hypothesis, that needs to be proven by implementation and measurement. —Tom Gilb

The Clean Architecture - Note 4

When software is done right, it requires a fraction of the human resources to create and maintain. Changes are simple and rapid. Defects are few and far between. Effort is minimized, and functionality and flexibility are maximized.

The Clean Architecture - Note 5

The goal of software architecture is to minimize the human resources required to build and maintain the required system

The Clean Architecture - Note 6

If you give me a program that works perfectly but is impossible to change, then it won’t work when the requirements change, and I won’t be able to make it work. Therefore the program will become useless. If you give me a program that does not work but is easy to change, then I can make it work, and keep it working as requirements change. Therefore the program will remain continually useful.

The Clean Architecture - Note 7

Software—the stuff of computer programs—is composed of sequence, selection, iteration, and indirection. Nothing more. Nothing less.

The Clean Architecture - Note 8

First of all, a software architect is a programmer; and continues to be a programmer. Never fall for the lie that suggests that software architects pull back from code to focus on higher-level issues. They do not! Software architects are the best programmers, and they continue to take programming tasks, while they also guide the rest of the team toward a design that maximizes productivity. Software architects may not write as much code as other programmers do, but they continue to engage in programming tasks.

The Clean Architecture - Note 9

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 Clean Architecture - Note 10

Think of Main as the dirtiest of all the dirty components

The Clean Architecture - Note 11

At first we thought all the computer power would be in server farms, and the browsers would be stupid. Then we started putting applets in the browsers. But we didn’t like that, so we moved dynamic content back to the servers. But then we didn’t like that, so we invented Web 2.0 and moved lots of processing back into the browser with Ajax and JavaScript. We went so far as to create whole huge applications written to execute in the browsers. And now we’re all excited about pulling that JavaScript back into the server with Node.