2004년 9월 16일 목요일

[책]Death March - Ed Yourdon(소프트웨어 프로젝트에 관한 책)

Death March

by Ed Yourdon (Prentice Hall, 1997)





Preface from the book
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.

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!" Well, 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, or so it seems.

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 and actually 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 manhood, somewhat akin to climbing Mount Everest barefoot. I felt this way during my first few software projects back in the mid-60s, 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.

But another segment of our industry 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 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 is pretty smart and is eager to manage projects in a rational way; I also think that today's business users and senior managers are much more computer literate 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 6 months, the competition will grab the entire market for its 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 a statistical data from metrics gurus such as Capers Jones, Howard Rubin, 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 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.

So the real question is: If you can't avoid death-march projects, how can you survive them? What should you do to increase your chances of success? Where should you be willing to compromise-and when should you be willing to put your job on the line and planto resign if you can't get your way? That is what this book is about. These issues are as relevant for the manager in charge of the project as they are for 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.

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-blood 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 a by-product 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, but 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.

I also intend to collect advice from the field on my Web site at http://www.yourdon.com -from real project teams that have some practical tips on best practices, worst practices, and "breathalyzer test" questions. Even if you don't have enough money in your project budget to buy this book (such penny-pinching budgets are an indicator unto themselves of the risk associated with a death-march project!), it won't cost you a penny to check the Death March Web page.

Whatever you decide to do, best of luck on your next death-march project. And remember the words of Samuel Beckett:

Ever tried.
Ever failed.
No matter.
Try Again.
Fail again.
Fail better.
Samuel Beckett
Worstward Ho (1984)


댓글 없음:

댓글 쓰기