A fabulous conversation with Marcelo
This is long, but hopefully worth it.
I was recently contacted by a gentleman we'll call Marcelo about a dilemma he's facing at his workplace. With his permission, here's what he says:
... my organization has projects which follow a formal Unified Process and they are CMMI compliant, but other projects use Scrum + XP, and are defintely not CMMI compliant. I am in charge of the SEPG [software engineering process group] in the company, and I have difficult times when I try to instill some CMMI artifact in the agile projects. They are all the time bragging about "Hey, check out the Agile Manifesto. It says Working Software over Comprehensive Documentation". Then, I'm speechless. I have no arguments to use except for "Yeah ok. But CMMI requires it". And that ends the discussion, and we cannot agree at all. I know I should try to show the business value of every piece of documentation that is used, but hey, I've never read of Configuration Audits in any XP book!!!
I was wondering if you could give me some advice on this.
This is my response:
Do your agile developers value:
- their families over their cars?
- their free time over their jobs?
- their friends over their selfish needs?
- their lives over their money?
For most people, while there is value in the things on the right, they value the things on the left, more.
Agilists like to say that there is "less" value in the things on the right, but they act as if there is NO value in them.
The failure in agile philosophy is not that it is flawed. It is simply poorly enacted. Agilists who fail to comprehend the value in the things on the right of the manifesto tend to take a very short-term view of things that have value. They tend to fail to lift their heads and look out beyond the confines of their projects and out to what adds value to the company. A successful project adds value, yes. Being able to run 20 projects concurrently of any size and composition and charge more than anyone else adds much more value. What is it that can help the company grow revenues AND margin?
Ask them to scale their methods up to encompass a project 5 times their size. Will it work? What if the project is being worked on in 3 different time zones and continents? Will it work? What could they contribute towards creating an agile project method that performs as a mature process that can improve? What if your company would lose all business if not rated as a Maturity Level 3? What would they say if there were actual companies who were BOTH agile AND maturity level 5 ... or 3? What could they contribute so that they can still be agile and mature of process improvement?
One thing you may be struggling with, unnecessarily, is the requirement for documentation. There are no requirements for documentation in CMMI. The need for documentation in CMMI is a remnant of an outdated way of implementing CMMI. What CMMI expects is the ability to improve processes.
How can you improve a process if you have nothing to show for it while it's actually happening? If you don't know what the steps are that you took to create a product and you don't know what step in the creation of the product failed? Without some artifact of a process, it's quite difficult to improve it. So, at most, CMMI expects that if a process is being performed that there be some type of tangible evidence that a process had "been there".
I argue that in true agile environments, and not just those giving lip-service to agile methods, they are generating such artifacts. If for no other reason then to be able to communicate, to have a common lexicon, and keep track of the work. When that's the case, you can then integrate a process improvement system, based on CMMI, into the routine activities. And, in the agile philosophy, no more process than is absolutely necessary.
Take CM Audits as the example. The purpose behind CM audits is to make sure that the CM system is working. There's nothing more to it. Everyone knows that when the CM system fails (either tools or people) to perform as expected, bad things happen to good code. So, how does it not add value to check in on the CM system periodically to ensure that it's working? That's all a CM Audit is supposed to be doing.
The key with CMMI is to understand the value of performing a process AND to understand enough about process design such that the process can be designed into everyday ordinary organic work. Another key is to implement process efforts exactly as you would product efforts. If you're using XP you'd need a user story for each process activity. In Scrum it would be a task on the backlog.
Many criticisms of agile projects is the failure to look at the needs of the product that lie beyond the delivery date. If there is no requirement for creating a "maintainable" product, then the failure is in the product requirements, not the product development methods. Practices here and there in CMMI expect, in terms of process and artifacts, creating the ability for people at any point in the future of the product to return to a point during development and understand what was going on. Why did they make that decision? Why does this interface have this port? How did they not plan for enough testing?
I heard of an agile-friendly CMMI consultant being confronted by an agile team who refused to take and store a digital photo of their white board design, claiming it didn't add value to the product, therefore it didn't add value to the project. This simple photo would have been sufficient evidence of several CMMI practices. But it wasn't until the same team was required to perform some act of maintenance on the product (I don't remember whether it was a bug fix, design change, or requirement change) that they realized how this simple photo would have added value by saving them (and their customer) days of analysis.
Referring to Alistair Cockburn's Agile Software Development, Marcelo points out,
... paper is the worst form of communication. It is the coldest channel, and it conveys for more misunderstandings. So, if you take this into account, and are part of an agile team, you would think "Hey, no more paper, we are all here, sitting together. Let's maximize our face to face communication channel". And well, all the possible CMMI evidence expires into thin air. No written plans, no audits, no minutes. You would have to put a camera to record everything that took place in order to show evidence than the goals which are required by the model, are being implemented....
To which I also had an answer (no surprise):
(I edited it a little to include some insights from Marcelo's reply.)
I completely agree with Alistair. ... ...
Creating a "paper" document *is* the coldest form of communication. And by "paper" we both understand that a MS Word doc on the screen is hardly better than actual paper. One significant reason is that paper is seldom written or organized well. Besides, once written, paper cannot be easily/quickly modified to "speak" to more than one audience at a time. Face-to-face conversations is far richer, far more adaptable, and can get more ideas across in less time with less need for re-translations.
The part I hear you struggling with is the one that equates "artifacts" with "documents". And, I also hear that you understand that if a stand-up meeting in which all the practices are being performed doesn't generate artifacts of its own, that a video tape of the meeting could be the only evidence. I also hear that part of your struggle comes from the perspective of artifacts for a SCAMPI vs. artifacts for the capability to perform process improvement.
My approach has me looking for artifacts that indicate the capability to perform process improvement. If I can find some outputs of a process on which I can perform process improvement, then these are the very same things on which I can perform a SCAMPI. I am much less likely to find what I'm looking for if I look for things from the perspective of the SCAMPI rather than from the perspective of process improvement. Taking my approach adds value and people can sign-up to it. Taking the SCAMPI-focused approach causes skepticism and cynicism about process improvement. People *see* that the activity is oriented towards the appraisal rather than at process improvement.
Here's where I assert some challenges to the agile community:
Want to know what's WEAKER than paper? Humans.
Human hearing and memory is far weaker than artifacts. If no record of what's been agreed-to at a meeting exists, how can anyone hold anyone else accountable for doing what's expected of them? I challenge the assertion that no records exist resulting from such meetings. If nothing else, people take some action from a meeting and do some task.
Also... how do people account for their time? How do they track issues? If accounting for time or issue tracking is so loose that all time on a project and all issues, regardless of what that time is being spent doing and or the severity of the issue, is accounted for with the same detail (that is, without any detail), then how does a project know when re-work is taking place or when resources must be re-allocated? If a project accounts for re-work the same as accounts for original work, then it can't honestly say that it knows its own error rates or project efficiency, can it?
Even if people leave a meeting and go code with no other activity in-between, what they did in the code should have some reflection of what comes out of a meeting. I have a very hard time seeing how developers can claim to be developing a product THAT CAN BE MAINTAINED without creating some sort of trail of bread crumbs. I really don't care how big the bread crumbs are or what kind of bread or even how closely spaced the bread crumbs are... they must exist. I've never heard of a company that knows what it's doing and has no record of having done it. On the other hand, I know of countless companies who don't *realize* that they have such a trail of evidence. Otherwise the product cannot be maintained, or in some cases tested, or even usable by the client. Our challenge is to help the developers recognize the bread crumbs for what they are and to help them take advantage of them.
If the goal is to create a product that will not be maintained, that will be thrown away after first use, then the important question to ask is, why bother trying to create a managed process (Capability Level 2) around creating it? A performed process (Capability Level 1) would be sufficient.
If, at the beginning of a project, all of the project's activities are laid-out, such as the frequency of meetings, the content of meetings, the assignment of resources and responsibilities to tasks, then I would submit that in such an activity not only constitutes "planning" but it also can withstand the test of the SCAMPI's need for evidence, when backed-up by affirmations.
I go back to my original assertions: if looking beyond the immediacy of a pending delivery is important to an organization, then even agile organizations will have to figure out how to incorporate the barest minimum from the things on the right into the things on the left in order to accomplish objectives greater than just delivering their single project on time.
6 Comments:
I think we may be largely in agreement. Coming from the developer side of the picture, I'd like to rephrase some of your points and suggest a way forward for someone like Marcelo.
I believe one of the major sticking points with CMMI has long been one of information format. Rather than taking the natural artifacts of software development and using them directly, we have been generating written documents that repeat existing information in specific outline format. We need to make use of the true artifacts of the development process. This requires a higher-level skill set on the part of the auditor, but avoids creation of "artifacts" that are solely intended for the auditor.
My recommendation to a process engineer encountering an agile development group is to sit down with the team lead and offer to help document the team's process. Although, theoretically, the team could tailor the existing processes itself, given the size of most engineering process libraries I have seen, this is not truly feasible. Someone outside the development team needs to take on the task.
Look at the artifacts the team is producing as part of its work and determine if those are sufficient to meet the process criteria. If a team is using 3x5 cards to prioritize, assign, and track progress, is there a need to create a requirements document covering the same information. For all current and future work, the requirements are posted on the wall for all to see. For closed tasks, it would seem to be a minimal request to have the team put a staple through the cards at the end of an iteration and drop them in a file drawer. Likewise, if the team is using Sprint spreadsheets, these can easily be archived at the end of a Sprint.
If the team is truly using a test driven design approach, can the test source code itself be a sufficient artifact of testing activity. Presence of unit tests can be verified with a touch of a button. The coverage of unit tests can be quantified through defect injection and this can be determined far more accurately than through review of a written document.
Consider whether some processes can be directly observed. Why even look at an artifact when the real thing can be viewed? If the team claims to have daily stand-ups, planning games, Sprint planning, review, and retrospective meetings, or whatever, attend one and see what the process truly is. This may take more schedule time for the auditor than digging through the contents of a hard drive, but it will also give a far better picture of the processes being used.
On the developer side, there is also some growing up to do. There are those who propose almost anarchy with each developer choosing his own way. I tend to believe it is to the development team's advantage to have a core set of processes and tools. This is where a process group can be beneficial, especially at the start of a new effort with new team members.
Agile development is a quite different process than waterfall development and I feel it is a better engineering approach to software development. This means, however, that a different auditing approach is needed. Rely more on observation and actual artifacts and less on manufactured artifacts. Lastly, the development teams and the process team need to work hand in hand to define and refine their agile processes.
Wayne Mack
Marcelo did say something in one of his replies to the effect of having an auditor (appraiser) sit in with the developers "for a month" to observe, but the only thing I would actually need to check is whether this can qualify as a "direct artifact" of the process in a formal CMMI SCAMPI appraisal.
I honestly don't know off hand.
Something tells me the answer is "no".
However, I would be willing to bet that if an appraiser were to sit in on an agile group's meetings, he or she could observe and find evidence that the team itself doesn't realize is evidence.
Thanks for writing Wayne!
"This is long, but hopefully worth it."
Yes it definitely was very much worth it. Friday I'm going to a seminar on CMMI so I was doing some background research and there were lots of unflattering. Some comments that I saved were:
"Also, yes, If you read the CMM docs, it will push you toward Waterfall, which I think doesn't really work. To make a waterfall project of DoD magnitute work, you might need huge amounts of overhead and QA and wierd arcane academic metrics. That ain't what I do, so ..."
and
"The goal seems to be to exploit mediocre talent to produce reliable, consistent, though mediocre results. Sort of a recipe for quantity at the expense of quality."
Then I read your blog post and the true ideas (as opposed to how it's often very bureaucratically implemented) started shining through and I'm no longer as skeptical of CMMI (only of most of its consultants). Thank you.
I can't begin to tell you how pleased I am, Guillaume, that you're taking with you the understanding that the root of all CMMI evil is not the model, rather in how FAR TOO MANY people have poorly implemented it.
Many things in life are easier when you don't have to think or work in order to achieve it. Why think hard or find ways to be innovative when you can just let someone else tell you how to do it?
This is how many have implemented CMM and CMMI. Companies let consultants tell them how to do it and consultants let the model tell them how to do it. The problem is that a model should never tell anyone anything other than "these are the descriptions of the pieces that, under ideal situations, make up a system one might want to use in order to..."
Thanks for writing!
How do you create MAINTAINABLE PRODUCT? Agile Developers create comprehensive multilevel test suites that serve as product documentation as well. Tools like Fit and JBehave even goes further and tries to write executable specifications in the form of tests.
Agile teams create enough documentation. Our story board, wiki , big visible charts, our domain model on the wall are all parts of "enough documentation"
In the second edition of Agile Software Development (2006), Paul McMahon commented on this (approximate quote follows):
[["Objective evidence (OE) is critical to the appraisal method, but more than one type of OE is allowed. To achieve an expected specific practice, an organization’s adherence to the practice must be verified by an appraisal team through what is referred to as direct and indirect artifacts.
Direct artifacts relate to the real intent of the practice. Examples are requirements, design, code, and test artifacts. (Note here that the model doesn’t dictate the form these direct artifacts must take, nor the order in which they are must be produced.). Indirect artifacts are a consequence of performing the practice, but they are not the reason for the practice, nor are they required by the practice. Examples are meeting minutes and status reports.
But this is where I have seen many process improvement initiatives go off track. Too often I have found organizations being driven to perform unnatural and non-value- added behaviors to produce unnecessary indirect OE, rather than maintaining focus on the real target:, quality products produced for their customers (direct OE).
My point is that indirect artifacts (e.g., meeting minutes, status reports, and so on) are not required by the model. I am not saying that meeting minutes and status reports are not important, but I am saying that you can use what are called “affirmations” during an appraisal instead. This means you interview people, and they tell you what they do.
For example, the appraisal team can interview an agile team, and the project team members tell the appraisal team what they do. As an example, a response from a team member might be, “We hold daily standup meetings where the team members report status and the team lead listens and then removes obstacles.”
The appraisal team takes notes on what they hear (affirmations). These notes are then used as evidence that the organization is meeting the intent of many specific practices in the model. We don’t have to force unnatural and non-value- added behavior, and extra time-consuming work to create unnecessary artifacts to get ready for a CMMI appraisal. The direct artifacts and the affirmations are sufficient.
"]]
I'm curious how this fits with your view. --AlistairCockburn
Post a Comment
Subscribe to Post Comments [Atom]
<< Home