A Fire Drill is a recurring scenario in many software development organizations. A project is initiated, but the staff delays design and development activities for several months while various technopolitical issues are resolved at a management level. (One software developer described strategies for on-the-job software delivery as: “Wait until management is desperate, and they will accept anything you give them.”)
Management prevents the development staff from making progress either by telling them to wait or by giving uncertain and conflicting directions. Perhaps most destructive are the externally generated changes in project direction that lead to rework and inhibit progress.
A few months into the project schedule, it becomes clear to management that development must progress immediately. Impending project cancellation is the usual motivator.
This situation is announced at an “all hands” Fire Drill launch meeting for development staff, during which management makes ambitious (or unrealistic) demands for software delivery. A typical example is a project that spends six months performing requirements analysis and planning, and then endeavors to design, implement, and demonstrate the software in less than four weeks.
Because the entire project is pressed for time, compromises are willingly made in software quality and testing. In a perverse way, the emergency situation makes the job easier for some software developers, as management will accept almost any software (or documentation) product with few questions if it is behind schedule. However, conscientious developers who deliver products before their deadlines are often compelled by management to rework their solutions.
An effective solution that project management can implement is called sheltering. Project management is responsible for delivering a software product, regardless of the unresolved management-level issues. The work environment required for quality software development differs significantly from the Fire Drill environment.
In particular, architecture-driven development requires lengthy time frames and long-term commitments. Architecture-driven development is the most effective approach for software success according to Booch (1996) and other authorities. In contrast, Fire Drill environments preclude staff retention, an important issue for software managers today.
In the sheltering solution, management creates and maintains two alternative project environments: internal and external. The majority of the software development staff operate in the internal environment, where the focus is long term and encourages continual progress toward software delivery.
As much as 80 percent of software in systems is not application-specific—the so-called internal model The internal project environment can proceed to construct the internal model independent of changes in external technopolitical issues. Building internal increments is also the most efficient use of software development resources in iterative-incremental projects
The external environment is also called the project’s “public image.” Its purpose is to maintain relationships with outside entities: upper management, customers, and peer projects (with which resource competition and reuse opportunities exist).
The external environment staff may need to generate repeated project crises to obtain essential resources. In a Fire Drill culture, emergency scenarios may be seen as the equivalent of assertiveness, when projects compete for management attention and resources. A small number of managers and development staff can maintain the external environment.
Their job is to address the changes in the external environment so that the majority of the project staff are sheltered. Some examples of external environment activities include: progress reports, status reviews, procurement, staffing, customer presentations, and marketing demonstrations. Sheltering effectively isolates most staff members from these activities.
Occasionally, however, emergencies are real, and heroic commitments of development time and effort may be needed. Nevertheless, it is important to limit the frequency of Fire Drills so that development staff members are available to handle the demands of real emergencies.
The Fire Drill mini-AntiPattern is related to several other key AntiPatterns, including: Analysis Paralysis, Viewgraph Engineering, and Mushroom Management. In Analysis Paralysis, the quest for perfection in analysis modeling leads to a protracted analysis phase, which compresses the development schedule, thus creating a Fire Drill.
In Viewgraph Engineering, an organization never makes the transition from paper-based analysis to software development; the work environment is very similar to the situation preceding the Fire Drill launch-meeting. In Mushroom Management, the developers are isolated unnecessarily from the real end users (not the end-user management).
Developers are unable to obtain clear requirements or feedback on user-interface capabilities.
The Mushroom Management solution favors constructive interchanges between operational end users and developers, whereas the Fire Drill solution favors destructive interchanges between developers and end-user management, when changes in direction and uncertainties can derail the software process.