Expand the scope of "value".
I get common resistance from agile proponents that part of the agile philosophy is to only perform activities that add value to the product, and thereby (the assumption is) to the client. This is often a stumbling block for the "lean" folks too.
The argument goes along the lines of: much of the CMMI practices to "maintain" and even many of the practices to "establish" certain work items don't add value. If not, why do them?
It's a strong case. But strong cases for not doing practices don't make for organizations that can get through a SCAMPI (CMMI appraisal) and end with a maturity level rating.*
So what is there for an organization to do?
There are two ways (non-exhaustive and not mutually exclusive) to re-factor this thinking, both of which involve adding long-term value in addition to immediate value:
1) Adding value to the organization, and
2) Adding value to the future product (or, to the product in the future).
In the first approach, process activities are seen as adding value beyond the immediate project. Process activities are seen as an investment in the efficiency and productivity of future projects. And, on sufficiently long projects, these activities can provide feedback in time to make a difference to the projects underway and from which the process data is being collected. This approach adds value to the business in terms of know-how, intellectual property and competitive edge.
The second approach, while similar to the first is product-focused. In this view, the value in doing the process activities is in being able to reduce maintenance costs, make updates/upgrades less cumbersome or expensive and make the product more extensible. This often goes handily with allowing the developer to be different from the operator, the maintainer, or the help desk.
Many paradigms of process improvement use the metaphor of "throwing the product over the wall" as a means to describe what happens when products are developed in a serial, production-line fashion and not as an integrated, high-trust, highly communicative team (sound familiar?). The very antithesis of agile development.
Well, here's a wake-up call for some people, including self-proclaimed agile developers: the "wall" eliminated by integrated and agile development teams is not only between steps in the development life cycle. Sometimes the wall that needs eliminating is temporal. That is, stop throwing your well-tested, peer-reviewed, non-wasteful code over the wall for someone in the future to have to deal with. Most of us have had to make sense of someone else's spaghetti code at one point or another and we shouldn't be the ones to create it even if we did so by being lean and agile today while sacrificing the value of the product in the future.
So, the value we're trying to eek out of our process activities ought to take this sort of long-term view of "value" Some also refer to this as "Total Cost of Ownership" or TCO. Process activities ought to be calculated on the basis of TCO for the organization and the product.
In both approaches, the value being added to the organization as well as to the product is a reduction in waste. Companies don't become lean over night and they don't become great at agile practices with 2 days of stand-up meetings or one 30 day sprint. Often taking the time to identify, record, be methodical about, and update the organization's approaches can help find what works and eliminate what doesn't.
Really.... CMMI isn't what complicates this, it's not understanding CMMI that owns that job.
* Let's be clear about something... Achieving a maturity level (or capability level) rating should not be any organization's goal. Improvement should be. PLENTY of benefit, value and improvement can be had without *ever* being appraised and/or without ever attaining a "level" rating. However, for obvious reasons, achieving ratings has other value, such as being able to compete for certain customers and in certain markets.
Labels: competitiveness, lean, long term, organization, TCO, Total Cost of Ownership, value, waste