Lean Enterprise: How High Performance Organizations Innovate at Scale (Lean (O'Reilly))
Rate it:
Open Preview
Kindle Notes & Highlights
39%
Flag icon
Delay. By calculating cost of delay for each feature, we no longer rely solely on a product owner to estimate the business value for the stories in the backlog, which is a poor way to prioritize since this person must constantly recalculate in order to take into account the time sensitivity of business value. Instead, given that we have limited capacity, we think of prioritization as choosing what to delay. When development capacity becomes available, the team simply picks the item with the highest delay cost at that time. This is a key advantage of using Cost of Delay: following the Principle ...more
39%
Flag icon
Cost of Delay provides us with an economic argument for limiting work in process.
39%
Flag icon
The time sensitivity of the cost of delay is captured in an urgency profile. Urgency profiles that might be used in real life for Task A and Task B are shown in Figure 7-10. Cost of delay, on the y axis, represents the amount of money it costs per unit time to delay the work. To calculate the total delay cost, we measure the shaded area under the graph.
40%
Flag icon
The most important thing to bear in mind is that we are aiming for accuracy, not precision, in our estimates.
40%
Flag icon
If the uncertainty around the cost of delay is very high, this means we are in the “explore” domain and must test our assumptions, perhaps using one of the techniques, such as modeling a key metric with Monte Carlo simulations or testing business hypothesis with MVPs, discussed in Part II.
40%
Flag icon
Applying Cost of Delay across the enterprise allows us to decentralize decision making and bring decisions under economic control.
40%
Flag icon
Its purpose is to improve the quality of demand by enabling us to identify and avoid lower-value work whilst shortening lead times for high-value work.
40%
Flag icon
If you don’t have large queues and too much work, using Cost of Delay will likely provide little overall value.
40%
Flag icon
The ultimate solution for the deficit of throughput — and thus productivity — is to reduce lead times overall by reducing batch sizes, managing work in process, and reducing the cost of delivering value to customers.
40%
Flag icon
In terms of measuring value, there is no substitute for shipping and getting real customer feedback.
40%
Flag icon
In high-performing organizations, leadership and management has a sharp focus on the value the organization is creating for its customers.
40%
Flag icon
An effective innovation capability relies on being able to frequently test ideas with real users. Crucially, the rate at which we can learn, update our product or prototype based on feedback, and test again, is a powerful competitive advantage.
41%
Flag icon
Despite the name, continuous delivery is not about deploying to production multiple times a day. The goal of continuous delivery is to make it safe and economic to work in small batches. This in turn leads to shorter lead times, higher quality, and lower costs.
41%
Flag icon
Continuous delivery is the ability to get changes — experiments, features, configuration changes, bug fixes — into production or into the hands of users safely and quickly in a sustainable way.
41%
Flag icon
We must constantly monitor and reduce the lead time for getting changes into the hands of users.
41%
Flag icon
We reduce lead time by working to simplify and automate the build, deploy, test, and release process.
41%
Flag icon
The team is not allowed to say they are “done” with any piece of work until their code is in trunk on version control and releasable
41%
Flag icon
The solution is for all developers to work off trunk and to integrate their work into trunk at least once per day.
41%
Flag icon
Continuous integration is the practice of working in small batches and using automated tests to detect and reject changes that introduce a regression.
41%
Flag icon
It is, in our opinion, the most important technical practice in the agile canon, and it forms the foundation of continuous delivery, for which we require in addition that each change keeps the code on trunk releasable.
42%
Flag icon
The main objection to continuous integration comes from developers and their managers.
42%
Flag icon
That means it may take longer, at first, to declare stories “dev complete.” This may, in turn, drive the development velocity down and create the impression that the team’s efficiency has decreased — raising the blood pressure of development managers.
42%
Flag icon
However, we should not be optimizing for the rate at which we declare things “done” in isolation on a branch. We should optimize for the overall lead time — the time it takes us to deliver valuable software to users.
42%
Flag icon
Achieving CI is not simply a case of installing and running a CI tool; it is a mindset.
42%
Flag icon
At Google, for example, anyone is empowered to revert a bad change in version control, even if it was made by someone on a different team: they prioritize keeping the system working over doing new work.
42%
Flag icon
The job of the deployment pipeline is to evaluate every change made to the system, to detect and reject changes which carry high risks or negatively impact quality, and to provide the team with timely feedback on their changes so they can triage problems quickly and cheaply.
42%
Flag icon
43%
Flag icon
All changes to any system — or the environments it runs in — should be made through version control and then promoted via the deployment pipeline.
43%
Flag icon
That includes not just source and test code but also database migrations and deployment and provisioning scripts, as well as changes to server, networking, and infrastructure configurations.
43%
Flag icon
Auditors love the deployment pipeline because it allows them to track every detail of exactly which commands were run on which boxes, what the results were, who approved them and when, and so forth.
43%
Flag icon
approval processes external to development teams do little to improve the stability of services (measured in terms of time to restore service and percentage of failed changes), while acting as a significant drag on throughput (measured in terms of lead time for changes and change frequency).
43%
Flag icon
The data suggests that it is time to reconsider the value provided by heavyweight change control processes. Peer review of code changes combined with a deployment pipeline provide a powerful, safe, auditable, and high-performance replacement for external approval of changes.
43%
Flag icon
Deployment is the installation of a given version of a piece of software to a given environment. The decision to perform a deployment — including to production — should be a purely technical one. Release is the process of making a feature, or a set of features, available to customers. Release should be a purely business decision.
43%
Flag icon
Figure 8-3. Blue-green deployments, courtesy of Martin Fowler
44%
Flag icon
“dark launching.” In his talk on the Facebook release process, release manager Chuck Rossi says that all the major features that will launch in the next six months are already in production — you just can’t see them yet.
44%
Flag icon
Developers protect new features with “feature flags” so that administrators can dynamically grant access to particular sets of users on a per-feature basis.
44%
Flag icon
Figure 8-4. Deployment g-forces, courtesy of Paul
44%
Flag icon
The difficulty in defining quality is to translate future needs of the user into measurable characteristics, so that a product can be designed and turned out to give satisfaction at a price the user will pay. Walter Shewhart
44%
Flag icon
Instead of coming up with requirements or use cases and putting them into a backlog so that teams build them in priority order, we describe, in measurable terms, the business outcomes we want to achieve in the next iteration.
45%
Flag icon
creating target conditions based on customer and organizational outcomes as part of our iteration planning process, in addition to process improvement target conditions. This enables us to use program-level continuous improvement for product development too, by adopting a goal-oriented approach to requirements engineering.
45%
Flag icon
Organizations can only move fast at scale when the people building the solutions have a deep understanding of both user needs and business strategy and come up with their own ideas.
45%
Flag icon
It’s also essential to ensure that target conditions have measurable acceptance criteria, as shown in Figure 9-1.
45%
Flag icon
45%
Flag icon
We begin an impact map with a program-level target condition. By stating a target condition, including the intent of the condition (why we care about it from a business perspective), we make sure everyone working towards the goal understands the purpose of what they are doing, following the Principle of Mission. We also provide clear acceptance criteria so we can determine when we have reached the target condition.
45%
Flag icon
The first level of an impact map enumerates all the stakeholders with an interest in that target condition.
45%
Flag icon
The second level of an impact map describes possible ways the stakeholders can help — or hinder — achieving the target condition.
45%
Flag icon
These changes of behavior are the impacts we aim to create.
45%
Flag icon
The possible solutions proposed in the impact map are not the key deliverable. Coming up with possible solutions simply helps us refine our thinking about the goal and stakeholders.
45%
Flag icon
For this tool to work effectively, it’s critical to have the right people involved in the impact-mapping exercise.
45%
Flag icon
One of the most important goals of impact mapping is to create a shared understanding between stakeholders, so not involving them dooms it to irrelevance.