So what does it feel like to develop software according to plan-driven or agile methods? In this chapter we try to portray the activities in a typical day on a software development project as performed by a plan-driven, PSP/TSP-trained team and by an agile, XP-trained team.
There are five main constraints in software development management people, time, functionality, budget, and resources which all must be protected from uncertainty. Uncertainty manifests itself when the unplanned happens. David J. Anderson explains how a system can absorb uncertainty with the provision of buffers, and how and when these buffers should be used.
Jonathan Kohl relates an intriguing experience with a slippery bug that convinced his team of the value of exploratory testing: simultaneous test design, execution, and learning.
Throughput Accounting can be generally applied for the management, control, and reporting of any system. Throughput Accounting is appropriate for managing general systems because it focuses on Throughput, which is the desired adaptive behavior of the system.
Bill Wagner shows how you can create a set of extension methods on specific constructed types to implement that functionality in a very low impact way.
Bill Wagner shows how to provide a safe way for different threads in your application to send and receive data with each other by using synchronization primitives to protect access to the shared data.