Blogger: Kirk Knoernschild
The degree to which the software development process is defined, managed, measured, and controlled defines an organization’s process maturity. Increased process maturity is a good thing because it’s an indication of an organization’s ability to develop and deliver software. Unfortunately, in focusing on process maturity, many teams fail to consider two other important software process classification schemes - formality and ceremony.
Process formality represents the discipline of the team in adhering to the practices defined by the software development process employed. Process ceremony represents the weight and rigidity of the software development process employed by the development team. Increased process ceremony corresponds to tighter controls placed on the development team. The difference between process formality and ceremony is subtle, but distinct.
For instance, a team may be very disciplined in capturing system requirements and documenting them by writing use cases. However, one team captures these requirements on hand-written notecards and reviews them with customers during weekly system demonstrations. Another team uses a standard use case template and requires customer sign-off on the requirements before development commences. Both teams are formal in that they capture and document requirements through use cases, but only the process used by the latter has a high degree of ceremony
Waterfall methods tend to be formal and ceremonial, whereas agile methods tend to favor formality with little ceremony. The Rational Unified Process (RUP) is a good example of an iterative method that wants to be formal, but often achieves that formality through ceremony. An unfortunate manifestation of RUP.
The unique challenges of individual software development projects vary widely. In general, process formality is a good thing while ceremony is wasteful and impedes progress. Only when teams lack the discipline to execute important lifecycle activities is ceremony necessary. Something to keep in mind as you look to increase software development process maturity.