|Software Project Secrets|
Author: George Stepanek
Subtitled Why Software Projects Fail, this book provides an introduction to agile methodology.
This is a paperback edition of a book that first appeared in hardback several years ago, looking at what makes software development difficult and how Agile development techniques can help. When the book was first produced, many people thought Agile methods would become standard for software development. You couldn’t say that Agile has taken over the world, but it has its fans and is still slowly gaining ground. Proponents of agile methodologies such as Scrum and XP (Extreme Programming) are still convinced they’re world beaters.
This book starts by looking at 12 ways that software development is different from other common business endeavors. Most of these fall into the Hallmark school of the flipping obvious (software is complex; change is considered easy; technology is a vast domain). However, the main purpose of this chapter is to set the scene for the processes the author introduces later in the book.
Next, Stepanek looks at five topics within project management, and in each case analyzes what hidden assumptions are made. The five topics are the management of scope, time, cost, quality and risk. Stepanek uses the Project Management Institute’s Project Management Body of Knowledge (PMBOK) to describe how project management is supposed to work. Each aspect is taken in turn, with a description of the process, the assumptions that are made, and a detailed description of what effect the assumptions have. Chapter 4 sets out a case study to show how the hidden assumptions lead to the problems that cause projects to fail.
Part 2 of the book is subtitled ‘And how to make them succeed’. It introduces three Agile methodologies – Crystal, Extreme Programming (XP), and Rational Unified Process (RUP). Of these, XP has achieved the highest profile since the book was originally written. Each methodology gets a section describing the way it works and how it is used for software development. This is a good introduction to each of the methods and the benefits each offers. The chapter finishes with a look at how you can mitigate risks using agile methods, taking in turn the problems of incomplete requirements and scope changes; tools and technologies that don’t work as expected; developers lacking skills and expertise; the new software having defects and requiring rework; and project staff turnover. In each case the information is limited to a brief description of how the different methodologies deal with the problems, so you’re told that XP and Crystal use continues integration and automated testing to ensure the code remains free from defects, for example. Well, that’s that problem solved, then.
Next comes a chapter on budgeting agile projects. As Stepanek admits, one problem with agile methodologies is that because they allow ‘ongoing scope definition’, it’s difficult to fix a project’s budget. The author introduces seven techniques to minimize this, all of which are fairly obvious and addressed at an introductory level. The book concludes with a more detailed look at the earlier case study, and how it could be tackled using a combination of XP and RUP. This was interesting, but I remain to be convinced.
Overall, this book might be useful if you need an introduction to the ideas of agile programming and how the different methodologies discussed differ. One problem is that other options such as SCRUM that have become more popular weren’t big enough players to be included at the time of writing the book. Another problem is that if you are convinced Agile is the way to go, the book is too introductory to be really useful.