While technology can change quickly, getting your people to change takes a great deal longer. That is why the people-intensive job of developing software has had essentially the same problems for over 40 years. It is also why, unless you do something, the situation won't improve by itself. In fact, current trends suggest that your future products will use more software and be more complex than those of today. This means that more of your people will work on software and that their work will be harder to track and more difficult to manage. Unless you make some changes in the way your software work is done, your current problems will likely get much worse.
Regardless of the industry you are in, you almost certainly use software in just about every part of the business. For example, your software people develop and maintain the administrative systems for payroll, billing, receivables, sales tracking, and customer records. Software controls production, manages inventories, directs warehousing, and runs the distribution systems that operate your business. In service industries, your people build software to analyze, optimize, model, and support your clients. In product development, your engineers find that software is the most economical and reliable way to implement almost any sophisticated function. Software is now a critical element of computers, television sets, cell phones, and automobiles.
The quality of the software, its usability, and its timely development are critical to just about everything businesses now do. This means that, to manage your business, you must manage the software parts of that business effectively. Many managers and executives have struggled with the problem of managing software and have essentially given up. Because nothing they have tried seemed to work, they have concluded that they cannot manage software work. A common reaction is to outsource or subcontract the software work to somebody else. As many of the examples in this book show, that is often the worst possible solution. The performance of the subcontractors is generally no better, and it is often much worse.
Software work is entirely manageable, but only if you know how to manage it. The Software Engineering Institute (SEI) at Carnegie Mellon University was established by the U.S. Department of Defense in 1984 to work on the software problem. Its people have been addressing this problem ever since. They have learned why software work is so troublesome and what you can do about it. They have packaged their findings in a family of methods that are designed to help businesses like yours. This chapter summarizes the principles of this work, and the rest of the book describes what you can do to apply these principles to your organization.
The Principles of Software Management
To manage a software-intensive business, you must observe three management principles.
Principle Number One: Recognize That You Are in the Software Business
Whether or not you know it, you are almost certainly in the software business. If yours is like most businesses, software plays a pivotal role in most of your operations. For example, software schedule delays affect product delivery dates, and product delivery dates drive cost, revenue, and profit. Unless you can manage revenue and profit, you cannot manage a business. If you do not treat software as a critical part of your future, you cannot manage software, and then you might not even be able to manage your business.
Principal Number Two: Quality Must Be the Top Priority
In software work, quality problems overwhelm everything else. Quality is critical, and when quality is not managed, entire software projects are unmanageable. There are known ways to manage software quality, but they require proper training and disciplined engineering methods. The key need is for you to make a commitment to quality. You must make software quality the top priority.
Principal Number Three: Quality Software Is Developed by Disciplined and Motivated People
You cannot run an effective software operation without disciplined and motivated people. Software development is intellectual work, and undisciplined or unmotivated people cannot do timely or predictable intellectual work. Your people must be personally committed to their work, and they must care about the quality of the products they produce. Quality work is not done by accident; it is done only by skilled and motivated people.
These are the basic principles for managing software work. While they may seem obvious, they are not simple. As the examples in the rest of this chapter show, if you fail to follow any one of these principles, you cannot have a productive or effective software operation.