Flexible product development
Flexible product development is the ability to make changes in the product being developed or in how it is developed, even relatively late in development, without being too disruptive. Consequently, the later one can make changes, the more flexible the process is, the less disruptive the change is, the greater the flexibility.
Flexibility is important because the development of a new product naturally involves change from what came before it. Change can be expected in what the customer wants and how the customer might use the product, in how competitors might respond, and in the new technologies being applied in the product or in its manufacturing process. The more innovative a new product is, the more likely it is that the development team will have to make changes during development.
Flexible development counteracts the tendencies of many contemporary management approaches to plan a project completely at its outset and discourage change thereafter. These include Six Sigma, which aims to drive variation out of a process; lean, which acts to drive out waste; and traditional project management and phased development systems (including the popular Phase–gate model), which encourage upfront planning and following the plan. Although these methodologies have strengths, their side effect is encouraging rigidity in a process that needs flexibility to be effective, especially for truly innovative products.
For more mature product categories, flexibility techniques are not only overly expensive but often unwise. Consequently, flexibility techniques must be used with discretion, for instance, only in the portions of a product likely to undergo change.
When applied to the development of software products, these methods are commonly known as agile software development. However, agile software methods generally rely on special characteristics of the software medium, especially object technologies, which are not available to non-software products. Consequently, flexible product development draws from some of the roots of agile software development but tends to use other tools and approaches that apply beyond the software medium.
Flexible development uses several techniques to keep the cost of change low and to make decisions at the last responsible moment. These techniques include modular architectures to encapsulate change, experimentation and iteration to sample results and check them out with the customer frequently, set-based design to build and maintain options, and emergent processes that develop during a project in response to its needs.