Our achievements speak for themselves. What we have to keep track of are our failures, discouragements, and doubts. We tend to forget the past difficulties, the many false starts, and the painful groping. We see our past achievements as the end result of a clean forward thrust, and our present difficulties as signs of decline and decay.
Reflections on the Human Condition, aph. 157 (1973)
I know . . . you're intrigued by the title of this book, and you decided to peek inside to see what it's all about. But, you're busy, busy, busy and you don't know if you have the time to read yet another book about managing software projects. Especially if it's a book that tells you how things should be done in an ideal world where rational men and women make calm, sensible decisions about the budget, schedule, and resources for your software project.
However, you may have noticed that we don't live in an ideal world and chances are that your project requires you to interact with people who seem anything but rational and whose decisions hardly seem calm or sensible. In other words, you're working on a death march project. The wonderful thing about the title of this book is that I don't even have to explain it. Every time I mention it to friends and colleagues, they just laugh and say, "Oh, yeah, you must be talking about my project!"
These days it's likely to be my project, and your project, and everyone else's project too we're all working on death march projects. It seems to me that the first question you should be asking yourself(though it may not occur to you until the end of your project) is: "Why on earth did I let myself get suckered into such a project?" I'll discuss this in the first chapter, because my experience as a consultant visiting and observing many such projects from the sidelines is that the world would be a healthier place if more of us had the guts to stand up and say, "Hell, no! I won't join this death march!"
But, assuming there's no escape e.g., there are no other jobs available or you've got some form of a "golden handcuff" relationship with your employer that strongly discourages you from leaving the next question is: "How can I survive this project without ruining my health, my sanity, and my dignity?" If you're an optimist, you might even be wondering how you can conquer the obstacles before you to finish the death march project on time and under budget. But, if you've been through a number of these projects before, you probably know that the odds are stacked against you and that survival is the best you can hope for.
Having worked in the software industry for over 30 years, I find that our profession has a rather interesting reaction to death march projects. In some parts of the industry, especially in Silicon Valley, such projects are glorified as a test of fortitude, somewhat akin to climbing Mount Everest barefoot. I felt this way during my first few software projects back in the mid-1960s, and the fact that the same attitude prevails a generation later suggests to me that it's likely to be a permanent phenomenon, as long as technology continues to change as rapidly as it has been during my lifetime. Ours is not a mature industry. Every year there's a new Mount Everest to climb and a new crop of hotshot programmers who are convinced that they can run barefoot all the way to the top.
Another segment of our industry, however, regards death march projects as embarrassing failures. We've all been bombarded with statistics about the prevalence of schedule delays, budget overruns, buggy software, disgruntled users, and outright project failures. We've been told repeatedly by consultants, gurus, and methodologists that the reason for all these embarrassments is that we've been using the wrong methods (or no methods at all), or the wrong tools, or the wrong project management techniques. In other words, death march projects exist because we're stupid or incompetent.
If you talk to battle-scarred veterans in the field the ones who have gone through a couple of death march projects and have learned that it's really not fun to climb Mount Everest barefoot you'll often hear them say, "Hey! I'm not stupid! Of course I would like to use the right methods and tools and project management approaches. But, my senior management and my end users won't let me. The reason we have such a ridiculous schedule for this project is that it was imposed upon us on the first day, before we had the faintest idea what the project was all about!" Conclusion: Death march projects occur because senior managers are Machiavellian bastards and/or because our users are naive and unrealistic.
No doubt there's some truth to all this. We do make a lot of stupid mistakes managing our projects, our senior managers do indulge in ridiculous political games, and our end users do make unreasonable demands on us. I'm convinced that much of this is due to the rapid pace of change, combined with the usual disrespect that each new generation has for the advice offered by the previous generation. Why on earth should today's generation of Java-oriented hotshots pay any attention to the advice offered by my generation, whose formative programming experience took place 30 years ago in Autocoder and assembly language? And, how should today's generation of business users know what kind of Web-based application is reasonable to ask for, considering that their predecessors were asking for mainframe-based, on-line systems, with character-based, dumb-terminal interfaces?
Whatever the explanation for the phenomenon, I've come to a sobering conclusion: Death march projects are the norm, not the exception. I think that today's software developers and project managers are pretty smart and are eager to manage projects in a rational way; I also think that today's business users and senior managers are much more computerliterate than they were a generation ago and much less naive about what software developers can be expected to deliver with finite resources. That doesn't stop both groups of smart individuals from embarking upon yet another death march project because the competitive business pressures demand it and the new technological opportunities invite it. The business managers may be fully aware that a rational schedule for their new system would require 12 calendar months, but they'll also tell you emphatically that unless it's available in six months, the competition will grab the entire market for their new product or service. And, the technical staff may be fully aware that new technologies like the Internet are still quite risky, but they will tell you that if the new technology does work, it will provide a strategic competitive advantage that makes it well worth the risk.
To put it another way, industry surveys from organizations such as the Standish Group, as well as statistical data from metrics gurus such as Capers Jones, Howard Rubin, Paul Strassmann, and Larry Putnam, suggest that the average project is likely to be 6 to 12 months behind schedule and 50 to 100 percent over budget. The situation varies depending on the size of the project and various other factors, but the grim reality is that you should expect that your project will operate under conditions that will almost certainly lead to some degree of death march behavior on the part of the project manager and his or her technical staff. If a project starts off with these high-risk factors, there's going to be a lot of overtime and wasted weekends, and there's likely to be a lot of emotional and physical burnout before the end of the project. Even if the project begins in a reasonably calm, rational fashion, there's a good chance that it will deteriorate into a death march project as time goes on either because the original schedule and budget will turn out to have been highly unrealistic, or because the user will add more requirements to those upon which the original schedule and estimate was based.
So the real questions are: If you can't avoid death march projects, how can you survive them? What should you do to increase your chances of success? When should you be willing to compromise and when should you be willing to put your job on the line and resign if you can't get your way? That is what this book is about. As you will come to realize, the solution will involve issues of peopleware, processes and methodologies, as well as tools and technologies. If you're going to manage a death march project, should you insist on the freedom to staff the team with people of your own choosing? Should you take a hard-line approach with process methodologies like the SEI-CMM model, or should you let the project team abandon all formal methodologies if they feel it will help them accomplish the job? Should you insist on adequate programming languages, workstations, and CASE tools or is it more important to fight your political battles over the issues of people and processes?
These issues are as relevant to the manager in charge of the project, as they are to the technical staff that actually does the hard work of designing, coding, testing, and documenting the system; I'll address both groups in the chapters that follow. A word about managers and technical staff members: Some of the comments you'll see in the following chapters will imply that management is "evil" and that the project team members are innocent, downtrodden victims. Obviously, this is not the case for all projects and all companies, though the very existence of a death march project is usually the result of a conscious management decision. While the project team members may be willing participants in such projects, they usually don't propose them in the first place.
If you've decided at this point that you don't have time to read this book, here's a simple word of advice that may provide some value for the time you've invested in reading the preface: triage. If you're on a death march project, it's almost certain that you won't have the resources to provide all the functionality or "features" requested by the end user within the allotted schedule and budget. You'll have to make some cold-blooded decisions about which features to sacrifice and which ones to focus your resources on. Indeed, some of the frivolous features will never be implemented, and it's best to let them die on their own. Other features are important, but also relatively easy to implement, e.g., because they're by-products of the vendor-supplied class library or CASE tools that you're using. To use the medical metaphor of triage, these features will survive on their own. The difference between success and failure on a death march project often lies in the project team's ability to identify the critical features of the system that would "die" without an investment of substantial resources and energy.
Of course, there's more to surviving a death march project than just triage (I'll cover triage in Chapter 3). We also need to look at peopleware issues, "process" issues, and issues of tools and technology. I've tried to be as concise as possible, so you should be able to finish the whole book in a couple of hours; if nothing else, it should give you a more realistic assessment of your next death march project.
However, please don't get the impression that this is a "bible," or that it will provide "silver bullet" solutions to all of your problems. There are no guaranteed right answers in this book; what works in some companies and in some situations may not work in others. Equally important, the compromises that some managers and technical staff members are willing to make will prove unacceptable to others. I'll make what I consider to be reasonable suggestions, but it's up to you to decide which ones will work in your environment.
I also intend, on an ongoing basis, to collect advice from the field on my Web site at ...