3.2 Developing Products
Product development is the discipline of creating and bringing to market consumer or business products. This field also must deal with a problem that is like the development problem. The product development leadership must find a way to design and bring to market, in a timely and affordable way, a product that meets the stakeholders' needs. Going deeper, we find several similar challenges. The product and software development teams must
Create an innovative, elegant design that addresses the requirements in some optimal way
Understand and adopt the latest technology appropriately
Determine and prioritize user needs while meeting schedule and budget limitations
Deliver a quality product that will perform well in the field
Lead a team to achieve a robust, expandable, maintainable design
Coordinate the activities of multidisciplinary teams
Integrate technical and marketing strategy
Product development managers are not particularly concerned with generating documents. Their management approach to product development is as a collaborative problem-solving exercise.
In addition, many product developers must worry about manufacturability, generally a small problem for software developers. Therefore, while a few of the details are different, the overall problems are the same. Software leaders can benefit from the lessons learned from the product development community.
3.2.1 Product Development Lifecycle
There is no official product development lifecycle. From the various references given at the end of the chapter, you will find the following product development lifecycle is typical. See, for example, Ulrich and Eppinger [2000].
Knowledge acquisitiongaining an initial understanding of the problem
Concept developmentcreating a design approach to meeting the market opportunity
Product engineeringimplementing the concept design and adjusting it as necessary, adding design details to complete a full, detailed specification
Pilot productionbuilding a functional model to verify the solution and addressing any unresolved manufacturability problems
This development lifecycle ends at acceptance by manufacturing. Final bugs may be ironed out during manufacturing ramp-up.
Note how well these phases of the product development lifecycle align with those of problem solving listed in the previous section. During the knowledge acquisition phase, team members do everything necessary to understand what needs to be developed. They may interview users, read marketing reports, and consult with the sales organization. They may meet with management to understand business needs and the marketing strategy. They may develop a competitive analysis and study the underlying technology. The outcome of this phase may be a business case, a product proposal, a vision document, or a requirements specification. In short, the team understands the problem to be solved. When the team thinks it knows enough about the product, it is ready to proceed to developing the conceptual design.
During the concept development phase, the approach to solving the problem is determined. The development team creates a high-level (low-detail) design of the new product. They may draw pictures, develop a virtual prototype on a computer, or create some sort of mock-up. In the auto industry, they build life-sized clay models. An equipment manufacturer may construct a case or cabinet showing dials and displays (the user interface). This mock-up is tested with marketing representatives or a customer group in the user community. Product features are continually re-evaluated, and tradeoffs are made among the market value, the development risk, and the manufacturing cost. During concept development, the team may also consider several alternative design approaches and the tradeoffs among them. The alternatives may be evaluated in terms of the design quality attributes (for example, robustness and maintainability) and other product issues (for example, manufacturability and the cost of the bill of materials). Each design alternative consists of a list of the major product components and how they interact. This phase ends when the team thinks it understands how it plans to shape the design and agrees on the major components.
During the product engineering phase, the team implements the conceptual design. It fleshes out the design details until a full, detailed specification is completed. They may farm out the component designs to different teams. The development team continues to build a series of prototypes that reflect the increasing detail in the design. Team members evaluate the prototypes with respect to quality and manufacturing concerns. For example, two components may not fit together well enough to permit assembly without frequent breakage, or one component may interfere with the replacement of another in the field. Based on these determinations, the component design may be updated, requiring a trip back to the drawing board. This phase ends when the team is comfortable that any remaining design problems can be uncovered only in pilot production.
Eventually, in pilot production a fully functional version of the product is built and ready for transition to manufacturing. In this phase, the team verifies that they have solved the development problem. During manufacturing ramp-up, the development team addresses the operational issues of construction and assembly in the factory setting. They may discover last minute glitches that require some redesign. This phase ends when the product is ready for full production.
Given that the problems faced by software and product development are so similar, it is reasonable to expect that software development should follow phases similar to those of product development. This similarity will be discussed in detail in Chapter 5.
3.2.2 Phases and Iterations
One of the salient features of product development is that as the team moves through the phases, much of the team's activity consists of building a series of product iterations. Each iteration is a version of the product. As the development goes from phase to phase, the product iterations become increasingly close to final design. In the concept development phase, the iterations serve to help understand the product requirements. They may be mock-ups of the product for market testing. For example, a medical instrument maker may develop a version of the instrument with all of the buttons and knobs and no internal electronics. This mock-up can be used to test out the industrial design with prospective users. Later iterations can be used as a proof-of-concept to test out the practicality of the conceptual design. The final iterations might be used to address reliability and manufacturability issues.
Product development provides some important lessons:
The maturity of the overall product design is marked by completion of phases rather than by completion of documents.
Development progress is attained through product design iterations.
The overall design is tested on an ongoing basis.
A continual focus on meeting stakeholder needs is maintained throughout all the phases.
Throughout the process, attention is paid to adjusting the product features to address development and market risks.
To summarize, in product development, the team goes through the phases of problem solving by developing a series of product iterations. As we will see, this approach provides a good model for software development.