The phrase clean code encapsulates a philosophy of coding and specific principles that improve code quality and extensibility. These principles include the importance of code that clearly expresses its intent and the effective use of encapsulation and abstractions to isolate details appropriately. What about at the architecture level? Can systems be clean?