Everyone share the common goal: * quality * availability * security
We don't want to create specialists only understand and contribute to one area in the value stream.
Encourage every team member to be a generalist by: * providing opportunities to learn skills * rotating engineers through roles
Generalist engineers are more expensive but business benefits of enabling faster flow are overwhelming.
Goal is to value the achievement of organizational and customer outcomes such as revenue, customer lifetime value and customer adoption rate.
Software architecture should enable small teams to be independently productive, decoupled from each other so they don't need to excessively communicate and coordinate.
Developers should be able to understand and update the code of a service without knowing anything about the internals of its peer services.