Product developers are often process mechanics, thinking that if product development isn’t working, a process change will fix it. The first lesson we have learned from agile software development – the first line of the Agile Manifesto – is that, for flexibility, processes and tools are far less important than people factors – by an order of magnitude. So don’t expect silver bullets from process.
That said, you can do plenty to make your development process more flexible. First, recognize that the process should be emergent – emerging from the needs of the project itself as it proceeds rather than being fixed initially.
One way to make the process emergent is to standardize it at low levels, that is, establish the basic building blocks but allow plenty of freedom in assembling them. Observe that this is how we build languages: a fixed set of letters or characters, a little freedom to change or invent at the word level (blog, for instance, is a new word), more flexibility at the sentence level, and great freedom at the paragraph and document levels. Also observe that most development processes, such as phased development, attempt to standardize at the top level (the phases). In general, process quality arises in lower levels and flexibility stems from higher levels, providing quality and flexibility simultaneously.
Another counterintuitive approach is to build processes up rather than trying to eliminate unneeded parts. Although it might seem easy to remove parts, these constitute a safety net, making both novice developers and management reluctant to remove items. It requires a highly experienced developer to scale back confidently.
(c) Copyright 2013 Preston G. Smith. All Rights Reserved.