Home > Articles > Software Development & Management > Agile

  • Print
  • + Share This
This chapter is from the book


Most activities that require committed efforts in the pursuit of specific goals are organized with some kind of form. This is true regardless of the duration of the activity. It could be a 10-minute jazz performance, a 3-hour hockey game, a 6-month software development project, an 18-month political campaign, or a 5-year military operation. Consider some examples of form:

  • The minuet is an eighteenth-century dance that originated in France. The music of the minuet had a basic ABA form, meaning two different sections of music, with the A section played at the beginning and the end, and the B section between them. In practice, both sections often repeated with many variations. In turn, the minuet was often part of a larger work, such as a dance suite, which also contained other musical dance forms, such as the courante, allemande, gigue, Gavotte, and Bourrée.
  • Many jazz songs are based on the AABA form, with 8 bars given to each section and 32 bars total. The B section is often referred to as a bridge. Examples of AABA tunes include “Take the ‘A’ Train,” by Billy Strayhorn; “Round Midnight,” by Thelonious Monk; and “So What,” by Miles Davis. Another common form is ABAC, used in George Gershwin’s “A Foggy Day” and Jerome Kern’s “My Romance.” Sections may not necessarily be eight bars in length. Gershwin’s “Summertime” is ABAC, with each section comprised of four bars. Kern’s “All The Things You Are” has an ABCD form with 8-8-8-12 bars, and “Stablemates,” by Benny Golson, is ABA with 14-8-14 bars. The entire song is repeated multiple times, with at least one iteration of the melody at the beginning, followed by multiple iterations for each improvised solo and at least another iteration of the melody at the end.
  • A basketball game consists of four quarters. In the National Basketball Association, each quarter is 12 minutes long. Overtime periods are five minutes long. There’s a 15-minute break between the two halves; there’s 120 seconds between the first and second quarters, between the third and fourth quarters, and before overtime periods.
  • In software development projects that use an agile methodology, iterations (or sprints) typically last from one to four weeks. In the Eclipse projects at eclipse.org and the Jazz projects at jazz.net, projects often have three to nine milestone iterations. The goal of each iteration is to produce a stable build of software that demonstrates new functionality or defect fixes. These are typically denoted as M1, M2, M3, and so on. During each iteration, tasks such as gathering requirements, designing, coding, verifying new functionality, and fixing defects may all be performed. At the end of the last milestone, a project usually declares a feature freeze and then enters a series of shorter test-and-fix iterations to improve quality and stability. These are typically referred to as release candidates because the goal is to produce a releasable product at the end of each iteration. They are typically denoted as RC1, RC2, and so on.
  • The structure of a political, marketing, or military campaign typically includes the following phases:
    1. Assessment—Setting goals and evaluating conditions and restrictions.
    2. Planning—Defining specific objectives, scope, and cost, and allocating resources by staffing and equipping. In a political campaign, fund-raising may begin in this phase.
    3. Execution—Mobilizing resources and executing on specific objectives—for example: raising funds, connecting with voters, running advertisements, and carrying out orders. Throughout this phase, the results of the execution must be constantly monitored so that actions can be controlled and adjusted or cancelled, if necessary.
    4. Conclusion—Assessing the outcome of the campaign and cleaning up with specific tasks such as thanking donors, supporters, and volunteers; resolving any campaign debts; bringing home troops; and so on.

People use the predictability of form to help them set goals, time their deliveries, and shape their contributions. For example, a jazz musician who knows that he has 32 bars in which to improvise a solo may define a musical riff or motif, develop it with a climax, and then wind down the solo with an ending that assists the band’s transition into another musician’s solo or a restatement of the song’s melody. A software developer may plan to deliver a new feature or fix a defect before the end of a specific iteration. This allows her to plan specific activities such as design, modeling, coding, testing, reviewing, documenting, and so forth.

A form helps a team coordinate its efforts and increase synergy. The degree to which the team can reap those benefits depends on its ability to navigate a form. Such a form must define more than just the beginning and end of the activity. Sections, phases, and iterations are all examples of subdividing an activity. These subdivisions reduce the activity to more manageable chunks and give teams checkpoints against which to synchronize. It’s important to use a form that works for each situation. If too few checkpoints are spread too far apart, the coherency of a team’s efforts may suffer. Too many checkpoints occurring too frequently may add unnecessary overhead and reduce productivity.

The way in which an activity is subdivided is also important. It’s interesting to note how the form for software development projects has evolved over the decades. In projects that employ the waterfall model of development, the form defines four or five long phases for the project, with each phase focusing on one specific task. This means that all the requirements must be determined before moving on to the design, all that work must be completed before writing all the code, and so forth. In contrast, the form for a project using an agile methodology is more finely subdivided, with each iteration featuring a compressed cycle of all the software development activities to produce usable software.

Proponents of agile software methods tout them as vastly superior to the waterfall method. Indeed, they have many advantages. Agile methods can be particularly effective when a lot of change is expected or when, as is often the case in software development, many factors are not entirely known or understood. Does this mean that all activities can benefit from an iterative method? If you look back at the form of a political or military campaign, you will notice an uncanny similarity to the waterfall method. A similar form also is used in the construction of a building. Software development is a very different type of activity than hardware development or warfare or building construction. The cost of making changes is far lower, and the likelihood of unexpected changes is greater. When an aspect of a project involves substantial cost, it is critical to mitigate risks and get things right the first time. If you’re deploying 20,000 troops into enemy territory, you can’t simply drop them in there and then start iterating. It can be helpful to iterate if an initial plan goes awry, but the overwhelming bulk of the planning must be done up front wherever possible. Agility is a capability predicated on a mindset of responsiveness and flexibility. You should feel entirely comfortable using the waterfall method or some form of it if it provides sufficient agility yet enables you to effectively manage risks and costs. It’s far more important to follow the rules “Maintain momentum and “Lead on demand” and to heed other useful principles than it is to subscribe to specific methods.

  • + Share This
  • 🔖 Save To Your Account