“Extreme Programming: Maestro Style” is the name of a computer-programming methodology that has evolved as a custom version of a methodology, called “extreme programming” that has been practiced in the software industry since the late 1990s. The name of this version reflects its origin in the work of the Maestro team at NASA’s Jet Propulsion Laboratory that develops software for Mars exploration missions.

Extreme programming is oriented toward agile development of software resting on values of simplicity, communication, testing, and aggressiveness. Extreme programming involves use of methods of rapidly building and disseminating institutional knowledge among members of a computer-programming team to give all the members a shared view that matches the view of the customers for whom the software system is to be developed. Extreme programming includes frequent planning by programmers in collaboration with customers, continually examining and rewriting code in striving for the simplest workable software designs, a system metaphor (basically, an abstraction of the system that provides easy-to-remember software-naming conventions and insight into the architecture of the system), programmers working in pairs, adherence to a set of coding standards, collaboration of customers and programmers, frequent verbal communication, frequent releases of software in small increments of development, repeated testing of the developmental software by both programmers and customers, and continuous interaction between the team and the customers.

The environment in which the Maestro team works requires the team to quickly adapt to changing needs of its customers. In addition, the team cannot afford to accept unnecessary development risk. Extreme programming enables the Maestro team to remain agile and provide high-quality software and service to its customers. However, several factors in the Maestro environment have made it necessary to modify some of the conventional extreme-programming practices. The single most influential of these factors is that continuous interaction between customers and programmers is not feasible. The major resulting differences between the Maestro and conventional versions of extreme programming are the following:

  • Because customers are not always available for planning sessions, members of the team act on behalf of customers during these sessions.
  • In an elaboration of the frequent-planning and incremental-release concept, releases and planning meetings are synchronized with a fixed one-week iteration cycle that facilitates maintenance of focus on the development task.
  • Metaphors are occasionally used as needed in specific instances, but the conventional extreme-programming concept of a system metaphor is abandoned as not being helpful.
  • In a departure from the simplest-design rule, the team sometimes develops software infrastructure that affords capabilities, beyond those required in the current iteration, that may be useful later in the development process.
  • In the absence of continuous involvement of customers and of frequent testing of software by customers, there is heavy reliance on automated testing.

This work was done by Jeffrey Norris, Jason Fox, Kenneth Rabe, I-Hsiang Shu, and Mark Powell of Caltech for NASA’s Jet Propulsion Laboratory.

The software used in this innovation is available for commercial licensing. Please contact Karina Edmonds of the California Institute of Technology at (626) 395-2322. Refer to NPO-41811.



This Brief includes a Technical Support Package (TSP).
Document cover
Extreme Programming: Maestro Style

(reference NPO-41811) is currently available for download from the TSP library.

Don't have an account? Sign up here.