A Critical Look at CMM and Agile Through Gen Y


does not preclude innovation and change. The process owners are the ones who are the gatekeepers to progress." [13]

The core skills needed to perform a technical job becomes secondary. These incapable managers and leaders who grew up quickly not because of their technical abilities will find it difficult to work with the programmers working for them. This in turn results in the mistrust between managers and teams.

Quality groups, checklists and audits become the major activities in such organizations.

"The job of the quality department was felt to be policing rather than playing an important role in developing the system." [9]

The mistrust in the atmosphere results in manufacturing data, last minute documentation and an overall unhealthy atmosphere.

"The perennial problem is that of employees not being too keen on the processes and treating processes as a burden. New entrants still feel that documentation is a hell of work and the tendency for last minute documentation is a common phenomenon."[9]

Agile by definition is a bottom-up approach. Team gets to decide what works for them. There is an added trust and responsibility on the team to retrospect and fix its own course... and most importantly this is not driven from the top or external departments. Trust leads to responsibility that leads to commitment. This contrast of "we control our course" vs "we follow and work under a prescriptive process/model" becomes very significant differentiator.

The very first line in the Agile Manifesto states "Individuals and interactions over processes and tools"[14]. This being the major value definition, any and all the flavors of agile keeps this at the top of their priorities.

"Scrum believes that people, their skills and how they are harnessed are the most important factors for the success of a software development effort." [2]

"XP also emphasizes open workspaces, a similar

"people issue" that is outside CMM's scope."[3]

Once Trust becomes the core of the working model, it results in giving more ownership to the team. The only expectation on the team would be delivering what they are good at, that is working software. "Scrum Team: Responsible for developing functionality. Teams are self-managing, self- organizing, and cross-functional, and they are responsible for figuring out how to turn Product Backlog into an increment of functionality within an iteration and managing their own work to do so. Team members are collectively responsible for the success of each iteration and of the project as a whole." [1]

Agile prescribes delivering in short and frequent intervals.

"Our highest priority is to satisfy the customer through early and continuous delivery of valuable software" [15].

There are multiple objectives that get met through this principle. It gives an opportunity to realize the benefits quickly, the trivial one being reduced time to market. It gives frequent retrospections for the team to reflect on their own progress and collectively alter their course for betterment, and gives an opportunity to demonstrate what is being built for the customer and get necessary feedback to align their course to meet customer's expectations.

There is another aspect that is a direct result of these short cycles. The team gets to see the results of their hard work pretty quickly. This results in a team getting the sense of fulfillment at regular and short intervals. This makes a staggering contrast to ambiguous and abstract control charts under the supervision of a quality group that may not understand what the team is building.

Success of a team in an Agile environment rests with team and not with Agile. The same cannot be said in a CMM atmosphere where the success is assumed

About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.