For the past six years, I have worked at the Federal Aviation Administrationthe last four as Deputy Chief Information Officer. Billions of dollars are invested annually to safely move 700,000,000 passengers throughout U.S. airspace. The systems that manage air traffic share several characteristics that drive the FAA to disciplined execution of its development processes. Those systems require very high assurance and long lead times dictated by massive capital investment by government, airlines, manufacturers, and airports. System requirements are constrained by international agreements that ensure air traffic control works uniformly around the world. Air traffic control systems must be fair to all parties and must be installed while people are seven miles in the air. Careful long-range planning, stable requirements and architecture, and detailed documentation are essential to implementing and deploying such systems.
Nevertheless, processes for building air traffic systems can and do support aspects of agility. Ten years ago, air traffic control systems were built with very stilted processes. Today, spiral development, incremental development, and incremental deployment are common. Lighter-weight processes are used early in the lifecycle to prototype systems, refine requirements, and evolve architectures. Stakeholders are involved early and often to ensure requirements are valid and human interfaces are effective. I expect the FAA to continue to probe where more agile processes can reduce cost and speed deployment, while recognizing the demanding environment in which these systems must operate.
Balancing agility and discipline is essential in any sizable project. The authors
have done a commendable job of identifying five critical factorspersonnel,
criticality, size, culture, and dynamismfor creating the right balance
of flexibility and structure. Their thoughtful analysis will help developers
who must sort through the agile-disciplined debate, giving them guidance to
create the right mix for their projects.