The Five Ideals summarized from the book “The Unicorn Project”.
Locality and Simplicity
Development teams should be able to make changes to their code base and deploy, without impacting or coordinating with others.
Decouple applications and create abstractions to achieve locality.
Simplify code bases through abstractions as well.
The easier the code is to reason about, the easier changes are, and the less it breaks.
Focus, Flow, Joy
Remove distractions, dependencies, and other road blocks that prevent developers from doing development work.
With the above removed, developers will be able to focus and enjoy the work, producing better code.
Improvement of Daily Work
Build time into projects/schedules to allow teams to address technical debt and architecture.
These are the brittle things that break in an application/architecture first.
Improve anything that impedes a developer from coding.
Psychological Safety
Teams should be able to talk about bugs/problems in an application or architecture, without blame/backlash.
Blame-less postmortems after a production down event or major bug are critical to implementing actual fixes and preventing the same thing from happening.
This should be a learning experience for everyone, not a blame session.
Customer Focus
Core focus - everything a customer is willing to pay for.
Example: Web services, APIs, databases, storage.
Context focus - everything else.
Example: Any system that supports employees. (such as HR systems)
While context is important, don't let it take over focus from core customer concerns.