| need to measure the flow of the work streams by managing queues that deliver customer value and treat all interim measures skeptically.
|
||
| Definition of quality
|
Conformance to specification. That's why you need to get the specs right at the beginning.
|
Value to the customer. This perception can (and probably will) change. The customer might not be able to articulate how to deliver the value until working software is initially delivered. Therefore, keep options open, optimize for continual delivery, and don't specify too much too soon.
|
| Acceptance of variance
|
Tasks can be identified and estimated in a deterministic way. You don't need to pay attention to variance.
|
Variance is part of all process flows, natural and man-made. To achieve predictability, you need to understand and reduce the variance.
|
| Intermediate work products
|
Documents, models, and other intermediate artifacts are necessary to decompose the design and plan tasks, and they provide the necessary way to measure intermediate progress.
|
Intermediate documentation should minimize the uncertainty and variation in order to improve flow. Beyond that, they are unnecessary.
|
| Troubleshooting approach
|
The constraints of time, resource, functionality, and quality determine what you can achieve. If you adjust one, you need to adjust the others. Control change carefully to make sure that there are no unmanaged changes to the plan.
|
The constraints may or may not be related to time, resource, functionality, or quality. Instead, identify the primary bottleneck in the flow of value, work it until it is no longer the primary one, and then attack the next one. Keep reducing variance to ensure smoother flow.
|
| Approach to trust
|
People need to be monitored and compared to standards. Management should use incentives to reward individuals for their performance relative to the plan.
|
Pride of workmanship and teamwork are more effective motivators than individual incentives. Trustworthy transparency, where all team members can see the overall team's performance data, works better than management directives.
|
There are several strategies and tactics that can be employed to achieve "lean" traceability in service to " trustworthy transparency and friction-free metrics ."
A "lean" approach of traceability would focus on the following:
- Flow: If one uses " single piece flow " and does changes at the granularity that TDD mandates, then software-level requirements, design, coding, and testing are all part of the same task, and tracking them to a single record-id in the change-tracking system and version-control tool would actually go a long ways toward traceability - its much more work & creates many more intermediate artifacts when those activities are all separated over time (different lifecycle phases), space (different artifacts) and people (different roles/organizations). When traceability efforts noticeably interfere with "flow" is when agilists will start screaming.
- Minimizing intermediate artifacts and other perceived forms of "waste" (overspecifying requirements or too much requirements "up front") because fewer artifacts means fewer things to trace.
- Collocating both people & artifacts (the former for communication, the latter for " locality of reference documentation ") for those artifacts that are deemed necessary. This also entails applying Single Source Information whenever possible (and a project-wiki is one common, proven way of doing this).
- Coarse-Granularity and Modularity/Factoring of what is traced: tracing at the highest practical level of granularity (e.g., is it practical to trace to the individual requirement or the use-case? To the line of code, or to the method/subroutine, or to the class/module) - this would be about "simple design" and "(re)factoring)" as it applies to the structure of the traced entities and their relationships.
- Transparent, frictionless automation of








