Page 13 -
P. 13

important to recognize that no review is perfect—and that’s just fine. It may not be possi-
                          ble to catch 100% of the defects before coding has started, but a good review will catch
                          enough defects to more than pay for the time it took to hold the review.
                          It is always faster and cheaper to hold a review meeting than it is to skip it, simply because
                          it’s much easier to fix something on paper than it is to build it first and fix it later. When a
                          review turns up an error that takes a few minutes to fix in a document, it saves the team
                          the hours, days, or weeks that it would take to fix the error once it has been built into the
                          software. But even more importantly, reviews frequently uncover errors in documents
                          whose resolution requires a lot of discussion and decision-making. Errors like this can
                          completely destroy a software project if they make it all the way into the code.

                          Many project managers try to schedule reviews, only to meet with an enormous amount
                          of resistance from everyone around them. Peers, project team members, and senior man-
                          agers all seem to resist the idea of “yet another meeting.” Oddly, the same project manag-
                          ers who are unable to scrape together an hour and a half to review a scope document at
                          the beginning of the project generally have no difficulty whatsoever scheduling lengthy,
                          tedious weekly status meetings with no agenda, goal, or purpose. (Of course, not all
                          project status meetings have to be run that way!)

                          The truth is that there is no such thing as wasted time in a review. On average, every hour
                          spent reviewing and repairing documents saves well over an hour later in the project. This
                          is true because it catches costly errors early on in the project, when they are cheap to fix.
                          But reviews have other valuable benefits as well. By bringing team members into a room
                          to evaluate each others’ work, reviews foster respect among the team members for every-
                          one’s contributions. And, most importantly, a review results in a real commitment to the
                          work that is produced by the team, not just a signature.
                          Testing—whether it is unit testing, functional testing, performance testing or regression
                          testing—is just as important, and just as likely to be dismissed as unaffordable or “idealis-
                          tic.” Yet software testing activities are just as cost-effective as reviews. The team can’t “test
                          in” quality at the end of a project just by tacking on some testing tasks. Testing must be
                          planned from the beginning and then supported throughout the entire project. To come
                          up with a quality product, the entire team needs to actively look for defects at every stage,

                          in every document, and in the software. It’s the project manager’s responsibility to make
                          sure that this happens.


                          All Software Engineers Are Created Equal
                          A software project requires much more than just writing code. There are all sorts of work
                          products that are produced along the way: documents, schedules, plans, source code, bug
                          reports, and builds are all created by many different team members. No single work prod-
                          uct is more important than any other; if any one of them has a serious error, that error
                          will have an impact on the end product. That means each team member responsible for
                          any of these work products plays an important role in the project, and all of those people
                          can make or break the final build that is delivered to the users.


                                                                                            INTRODUCTION  5
   8   9   10   11   12   13   14   15   16   17   18