Process Consensus
To start answering this question, we must ask a few more targeted questions.
- Why do we want a common process?
- What does the process provide?
- How can we let the process deviate over time or between teams to fit different needs?
Why do we want a common process?
A common process helps keep the cooks safe from each other. It hopefully provides insight to the servers on how close the food is to being ready. Finally, the host shouldn't have to walk into the kitchen to know how long the wait may be or what the kitchen is capable of producing.
In terms of software, then, our goals are threefold:
- Enable concurrent development
- Provide insight to delivery dates
- Guide future development commitments
What does the process provide?
Enable concurrent development
To have multiple cooks in the kitchen, we need a way to communicate the orders to each one separately while also holding them to a common standard. Our process therefore needs a way to describe the desired outcome. In addition, since no one is perfect, there should be a defined means of checking the updates against shared rules and expectations.To those in the field, this should be relatively clear. The orders are requirements, acceptance criteria, usecases, or some other way of defining what the system should provide when the work is done. The validation of that work is code reviews, architectural analysis, quality validation, and similar.
Provide insight to delivery dates
To estimate delivery, our process needs a certain amount of knowledge baked into it - if you'll pardon the pun on my continuing analogy. How quickly do we cook stuff, and how complicated is the stuff being cooked?It's impossible to put exact numbers on either of these, of course. No two problems are identical, and no individual, let alone team, ever works at a truly immutable speed. Even so, with the proper knowledge coming out of our process, we can approximate both our rate of development and provide reasonable estimates for remaining work.
Guide future development commitments
Finally, as we plan for future work, we need estimates of work that hasn't even started yet. Perhaps there are problem spaces we've never entered before, or we desire new ways to use existing functionality and data.At this level, there is less detailed information than when simply providing delivery dates for what is already under way. The process needs a way to analyze the unknown and arrive at a reasonable understanding of the work's size and scope. What other areas may be impacted? Are there areas for possible future extensibility to plan for? Is the solution generic enough to support all customer needs while also fulfilling the immediate requests?
How can we let the process deviate?
For this to happen, there must be both a continual review of the guidelines and reasonable leeway written into them.
The continual review is used to determine which rules are working, which need adjustment, and which should be discarded entirely. New challenges may force us to shift course, and we need to be responsive to that as it occurs. If the process is too rigid it will break under pressure. At that point we either to start again from questioning why we need a process at all or simply accept that it will be ignored when inconvenient.
Leeway means that each rule should strive to be a guard rail rather than a railroad track. The former prevents us from veering off course into a ditch or, worse, over a cliff. The latter prevents any deviation from the defined course. If there is no room for movement in the process, there is no room for creativity. Creativity can bring unexpected value and open as yet unknown possibilities for future work.
Rinse, Review, Repeat
It's important to occasionally look at the process as a whole to determine if it's still the right fit. Chances are that if you haven't done a core review in a year or two there's some piece that people run through by rote without thinking about why it's done anymore. These periodic resets may not result in large changes to what you do, but are far from a waste of time.
Comments
Post a Comment