This Focused Performance Weblog is a "business management blog" containing links and commentary related primarily to organizational effectiveness with a "Theory of Constraints" perspective. TOC is noted for its applications in Project Management and Multi-Project Management (Critical Chain) and Operations Management (Drum-Buffer-Rope), as well as in Marketing, Strategic Planning and Change Management (TOC Thinking Processes). If you are on an archive page, current postings are found here.
Friday, March 21, 2003
• Requirements Churn -- A Question of Ends or Means? -- In a comment to a recent post (What is a Project?), someone who signed in as "DP" asked...
"I wanted to see if you'd comment sometime on how you'd handle "requirements churn." The heavyweight process that the agilists want to unseat start from the assumption that there is a well defined set of requirements (or that one is possible) and proceed logically from there. This is probably proper for most kinds of physical deliverables, but it fails to address the "softness" of software. I think this is one of the main reasons those non-agile processes fail so often in software. In my experience, the project promises are almost exactly as stable as the requirements - the whole notion of a moving target."
My immediate response (and this is an immediate, "rough draft" response, so please spare the flamethrowers for now...although I would like to engender a discussion on this with those who are more deeply involved in software development, so please make use of the comment feature below if you are so moved by what I have to say) is that this issue of requirement churn is embedded in a confusion of means and ends. When I advise clients on developing project plans, the starting point is the endgame...the objective, key deliverables, and success criteria that define the reason and output effects of the effort defined as the project. The output of a "software project" is not just "working code," but rather it is either A) a software product that is sold, installed, and solves some problem for a customer to the degree that they are willing to pay for it, or B) a combination of a system and business process change that enables the oganization to do something of value that it isn't able to do without embarking on the project. From my point of view, the objective -- the "ends" -- must be defined sufficiently so that a reasonable plan to achieve it can be devised, and promises can be made to the market, to shareholders/owners, and to other stakeholders.
When we move into the realm of software projects, "requirements" are seen as the basic link between the "ends" and their "beginnings" -- the design of the necessary work to produce it. What confuses me, as someone who has been exposed to just enough software-related projects to be dangerous, is to what extent requirements are "ends" or "means." The project objective is a very high level "requirement," one that if it is allowed to churn indicates serious management problems beyond the realm of project management.
I would suspect that there is a second level of requirements that remain quite stable once determined, probably related to basic/core functionality and user requirements associated with the objective. If these are allowed to substantially change, there had better be a darn good reason for it -- more than just the excuse of "softness of software." That said, a robust project management methodology, combined with good task mangement practices that I associate with my passing knowledge of agile development methodologies, should be able to highlight when those deviations are occurring and the impact on the original project promise. Good change control practices, tempered with an awareness of the potential for real added value, and supported by a planning/scheduling process that allows flexibility for such things deal with these.
The third set of requirements that I suspect is the source of concern about churn are probably in the details. It's my sneaking suspicion that these, even more than the second set, are related to the means of achieving the ends of the project rather than being ends themselves. Yes, they relate to the ends of tasks, but only as stepping stones to the complete system. Programmers and engineers focus on them, rightfully, but they are only local components of the larger effort, and must be dealt with as such. (There is also the "good enough" rule, and its propensity to be broken in tech/software projects. Sometimes, there is pressure to change a requirement to address some new technology or to make the solution more "elegant" or "perfect," when, to meet the needs of the customer, the original plan is "good enough." Sometimes I think tech/software projects are overly susceptible to such self-induced churn, unnecessarily. But that's a whole 'nother topic.)
A project can be planned with good enough results based on an overarching view of the system, probably at the level of the second level of requirements. The detail requirements, taking a cue from both lean manufacturing practices, and the process of network building associated with Critical Chain Project Management, are planned to occur "just in time," when needed to support the rougher view of the project. And if the schedule is a Critical Chain Schedule, the duration/effort uncertainty of the higher granularity pieces of the project are already taken into consideration and deviations from expectations do not become cause for undue concern; the schedule and the promise associated with it is buffered to absorb such deviations.
Fix the core requirements that define the ends, monitor the intermediate requirements for risks or opportunities, and develop the detail requirements (the means) when needed, and not before. Promise the effort based on a robust respect for risk and uncertainty, and don't worry about deviations along the way until and unless they threaten the project promise.
So asked whether to fix requirements up front or let them slide loose until more details are known about the project, my answer is a resounding "yes". That may sound like a bit of fence-straddling, but then, where I come from -- Critical Chain land -- is, I believe, a place that lies on the border, straddling the fence between "heavyweight" and "agile," and therefore gets minimal respect from either.
One of these days, that will change.
(Again, I need to refine my thinking on this, so comments are heartily solicited.)
posted by Frank - Permanent Link -
|