Preface
Software development failure is a persistent problem in software development practice that has consistently defied solution. This is so primarily because, despite the enormous expenditure of resources in the area of software development, organizations have been reluctant to devote resources to studying the root causes of software development failure and even more reluctant to share their experiences for the benefit of the software industry. Second, the study of the problem is relatively recent because researchers, like organizations, have also failed to show the requisite interest. Thus the problem has persisted, often with devastating consequences to organizations and individual professional careers. Given the billions of dollars of public and private funds that are spent annually on software development projects that end up as failures, it is surprising that little effort is directed toward studying the problem in order to recoup some of the investments made and to minimize recurrence of the problem.We characterize software development failure as the "perceived inability of the development project to meet the requirements or expectations of various combinations of organizational stakeholders." A stakeholder is any "claimant within the project development organization with a vested interest in the project and its successful completion or termination if necessary" (Ewusi-Mensah and Przasnyski 1994). Software development failure is likely to occur whenever any group of stakeholders perceives major potential problems in the project's development that may prevent the project from being successfully completed and implemented. A software development project is a collection of "interrelated activities undertaken in sequence and/or in parallel by some members of the stakeholder groups with the objective of producing a software system to satisfy some organizational requirements." The book's focus is entirely on project development failures; thus no attention is paid to the issue of implementation failure after software has been deployed within the organization. There is an important distinction between software development failure and implementation failure. Although the latter problem has received and continues to receive widespread attention in the Information Systems literature, software development failure has not been adequately researched due to the reluctance of management to acknowledge the existence of the problem within their organizations and also to the difficulties faced by researchers in gaining access to the relevant data from these organizations.This book is intended to help improve the science and practice of software development by making conspicuous the problem of software development project failures in both public and private organizations of all types. In spite of the remarkable progress made in software engineering in the last thirty years, we still face intractable problems in software development because we have not devoted adequate resources and attention to research the factors that may be at the root of the software crisis. Software development as a labor-intensive creative endeavor requiring collaboration among disparate stakeholder groups in an organization presents special challenges. Although these challenges are unlike those faced by engineering teams in the design of physical structures, we in the software development profession could well benefit from adopting the engineers' practice of studying and publishing their failures in an effort to understand what has gone wrong on a project and why, and, even more significant, how they could prevent its recurrence in the future.Software developers and their managers have devoted little attention or resources to study software development failures, and they have shied away from making public the results of any such inquiries. This status quo has persisted in part because, in our increasingly litigious societies, parties involved in failed software development projects look to the courts to settle their disputes instead of turning to the software engineering profession for an understanding of the root causes of the failure. Available in the public domain are only those few spectacular cases that attract the attention of investigative journalists whose interests, understandably, are not ours: to engage in a scientific inquiry sufficient to produce a cumulative body of knowledge to improve our understanding of software development theory and practice. I believe all organizations that engage in software development should, as a matter of professional practice, also have formal structures and procedures in place for studying and publicizing problems and difficulties encountered in the course of any software development that might have contributed to the project's failure. It is not enough that such inquiries into software development failures are carried out internally; the results of the inquiries should also be made available in order that others in society and within the profession may learn from them. I advocate openness as an essential concomitant in dealing with problems of software development failures. Learning from organizational software development project failures must be institutionalized within organizations to the extent that maintenance of implemented software in which corrections and enhancements are made to the operating software is considered standard practice in organizations.
Outline of the Book
This book offers empirically grounded explanations of the variety of organizational, managerial, and other relevant factors that have contributed to project failures, based on survey data and validated by analyses of different cases of failed software projects reported in the public domain. The book is made up of three parts. The first part lays out the concepts, issues, and methods at the core of the software development process. I discuss the conceptual explanatory factors underlying software development that make it a process vulnerable to problems, including failure from requirements analysis and determination to design and implementation.The second part examines the multiplicity of cofactors—organizational and managerial—that make software development a risky undertaking whose outcome often cannot be predetermined. The discussion covers the organizational, managerial, economic, and technical and technological problems that lie at the root of the failed projects and presents empirical data obtained through surveys of organizations.Part III discusses lessons that organizations can learn from the analyses of failed projects and how those lessons can be used to improve software development practices. I offer a learning paradigm intended to encourage widespread learning and sharing of experiential knowledge about failed projects and improve collectively the practice of software development throughout the industry. I also outline some of the critical issues organizations must pay attention to during the course of project development in order to maximize the chances of successful project outcomes. I highlight the promise provided by the evolutionary approach to software development; this approach emphasizes modularization and intensive collaboration between developers and users who provide constant feedback on early versions of the software. Finally, I examine the aftermath of project failures and elucidate the empirical factors that critically affect project outcomes, and I suggest ways that project termination decisions could be made that would minimize damage to employees' and project teams' morale and to safeguard organizational resources for future project developments. I end by enumerating the telltale signs of "problem projects," which should be aggressively scrutinized by project developers and organizational executives.