Product-Development Practices That Work: How Internet Companies Build Software
Because software is an increasingly pervasive part of the New Economy, delegating decisions about its development to technical staff can be risky for executives. Today's general manager needs to have a good grasp of the most effective methods for developing and deploying software products and services throughout the organization. So what is the best approach to software development?
Recent research from Harvard Business School professor Alan MacCormack and colleagues proves a theory about software development that has been gaining adherents for some time: The best process is an evolutionary one. Focusing on the area of Internet-software development, the researchers uncovered four practices that lead to success: an early release of the evolving product design to customers, daily incorporation of new software code and rapid feedback on design changes, a team with broad-based experience of shipping multiple projects, and major investments in the design of the product architecture.
Among the development projects cited are Linux, the poster child of the open-source movement, and Internet Explorer 3.0. Commenting on the latter, a project in which Microsoft came from behind with a product equal to Netscape's, a team member declared, "If someone asked what the most successful aspect of [Internet Explorer 3.0] was, I would say it was the job we did in componentizing the product." The new research supports componentizing. Getting a low-functionality version of the product into customers' hands at the earliest opportunity was shown to improve quality dramatically. The research also demonstrates that although age doesn't count, experience still does. The more projects shipped, the more capable a programmer becomes.
But in environments with rapidly changing markets and technologies, the usefulness of the evolutionary model extends beyond developing software. By dividing tasks into microprojects, a company can tailor the model to reflect any context. Traditional market research has limited value in the uncertain context of the Internet-software industry, and short microprojects are called for, with an early working version for feedback on the product concept. In more-mature environments, however, companies can specify more of the product design upfront, use longer microprojects and develop greater functionality before feedback is needed. Flexibility is key. Thus, an evolutionary-delivery model represents a transcendent process for managing the development of all types of software, with the details tailored to reflect each project's unique challenges.