Thursday, June 23, 2005

Agile Product Management

In the realm of software development, agile and iterative processes have been in vogue for a number of years. For those unfamiliar with the concept, agile processes contrast with waterfall processes. A waterfall process looks like:

1. Define the requirements the product must satisfy.
2. Analyze the requirements and produce models of the domain.
3. Design the product.
4. Implement the product.
5. Test the product.

The hope is that you perform each step so thoroughly that any retracing or repetition of steps in the process is minimal. Unfortunately, vast amounts of real-world experience shows that waterfall processes fail. It goes without saying that testing typically reveals mistakes developers make during the design and implementation steps, resulting in some redesigning, re-implementing, and retesting.

However, the most significant failure of the waterfall process stems from the fact that requirements are practically impossible to define adequately up front. Customers do not know exactly what they want, and even the most skilled product manager cannot elicit all of a product's requirements without trial and error. Implementing the product and demonstrating it to prospective customers almost always results in the discovery of new requirements or the recognition of errors in the original requirements.

Agile processes, in contrast, assume up front that retracing is inevitable, so they incorporate iterations in the process. With iterations, you perform the steps to yield a working version of the product for review. You then revisit the steps, incorporating the discoveries you've made and fleshing out further functionality. To help maintain discipline, you may time-box the iterations, meaning that you set a fixed amount of time to complete each iteration, and schedule the tasks to complete within each iteration accordingly.

Unfortunately, while product development teams have at least attempted to use agile processes, most companies do not formally include product management in the iteration cycle. Companies assume that the product manager's role in defining product requirements ends when he "throws them over the wall" to the designers and developers. This practice defeats a large part of the purpose of agile product development.

At Cauvin, Inc., we urge our clients to incorporate our product management and market research services in an agile product development process. Even if we can't integrate directly with a client's process, we at least produce our deliverables (product requirements, market segmentation, buyer profiles, messaging recommendations, etc.) iteratively, starting with templates and incrementally fleshing them out on a weekly basis. That way we can ensure that clients receive the information they need, in a format they can use.

1 comment:

Gaurav said...

Nice article, Roger.

I completely agree with you.

Even though product development is becoming agile in many organization, the consumers of these products (mostly internal) are not ready yet to cope up.

Agile Community needs to come up with guidelines for all other elements surrounding product development - product management, marketing, sales, support et all