By Walker Royce, Vice President, IBM Rational Software Services, IBM
Most business leaders understand the place of software in day-to-day business operations. Basic operational systems -- such as payroll and accounting systems, database systems, and interoffice email -- all depend on some level of hardware and networking investment, as well as software and regular software updates. Much of this software can be purchased commercially, in “off-the-shelf” packages, and that’s fine for small businesses and start-ups.
But consider the needs of enterprises that have enjoyed some level of success and now need to grow. To continue growing, successful businesses need differentiation in all areas of operations, from the sales model to the partner relations program. This means that a competitive business’s most vital software systems have to be custom-built, and that their information technology (IT) needs to be regarded as an area of competitive strength.
Whether developed in-house or by contract with a software development organization, IT can help determine a growing business’s profile in the marketplace. Some of the most obvious examples include the biotech industry, where IT can help to produce new cures; the securities industry, where software-based analysis can help brokerage houses understand market trends; and of course, the defense industry, where top-secret software development plays a critical role in systems built for a nation’s security.
Yet, as vital as software development capability can be for healthy business or government organization, many companies treat software production as if each portion of the system can be planned like a bridge or a skyscraper. And why not? When building anything as complicated as a system that’s going to form the corporate backbone, conventional wisdom encourages us to hire engineers trained in mathematical precision, with careful attention to detail and planning, The problem is, traditional engineering management style just doesn’t produce good results when it comes to software development. In my experience, project managers who use a “steering” leadership style, rather than a detailed plan-and-track leadership style, are more likely to produce better software products.
The best analogy I know for this lies in the practices of movie production. Consider the following:
Most software systems, unlike bridges, are not bound by the laws of physics, or properties of materials, but on only by human imagination, economic constraints, and hardware performance capabilities.
In a software project, you can change almost anything at any time: plans, people, funding, milestones, requirements, designs, tests. Requirements -- probably the most misused word in our industry -- rarely describe anything that is truly required. Nearly everything is negotiable.
Metrics and measures for software products have no atomic units. Economic performance more typical in service industries (value as observed by the users vs. cost of production) has proved to be the best measure of success. Most aspects of quality are very subjective, such as maintainability, reliability, and usability.