The Five Ideals
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.