news:comp.object just keeps begin' for that evangelist spirit:
On Tue, 4 Sep 2001 17:18:42 -0400, "John A. Byerly" <jbyerly@ess-quality_remove.com> wrote:
>Now that the dream is over, here is how it usually takes place. We step out >along the dream path, then some manager figures out that eliminating code >reviews would shorten the schedule by 3 weeks, and eliminating design >reviews would save another 3 weeks. With the reviews gone, and with >schedule pressures mounting, half the developers decide that they can just >start coding, and to heck with this design stuff (they didn't really >understand it anyway). Finally, enough code is written to start >integrating. Except, I didn't realize that we were using callbacks. I used >the Observer pattern instead. After all, we agreed that I would be >notified, I guess we really never settled on how. And so on. > >What usually happens is that the schedule is shortenend on paper (which is >what counts to the managers) but is increased many times in actuality during >integration and test. Then the course of action is to start cutting out >features so the delivery schedule (the third re-estimate, not the original) >can be met. > >You know, this would all be rather humorous if it weren't true.It answers it very well, thank you. In essense you are saying that you work in a typical organization. That you wish you could do lots of up-front work, but that you're organization doesn't have the patience to let you do it. They seem to be driven more by dates than by rational thought. No wonder you wish you had time to do the analysis and design up front.
Let me paint you a different story.
Every TwoWeeks you and your team deliver new features to your business. They get to choose which new features they are; and you get to tell them how many new features you can do in two weeks. They see progress every two weeks. Not only that, its the progress that they want to see.
[ProjectVelocity, UserStories]
The schedule belongs to your managers. They see how much you get done every two weeks; and they order the features such that you get the most important things done first.
[PlanningGame, CustomerBillOfRights]
Each iteration you and your team work together in the same room. You work in pairs; and the pairs work three to a table. Perhaps there are two or even three tables in the room. Every day the entire team meets for thirty minutes to plan the day's activities. If someone is going to use an Observer, you're likely to find out about it at that meeting.
[AllEngineersInOneRoom, PairProgramming]
Pairs switch off twice per day. Over the course of two weeks, everybody works with everyone else on everything. Nobody owns any particular module, everybody is reasonably familiar with the whole of the code base.
[PairPromiscuously, SharedCodeOwnership?]
Integration occurs several times per day. There is one code baseline supported by a bevy of unit and acceptance tests. Every couple of hours each pair checks in their changes, makes any merges necessary, and makes sure all the tests continue to pass.
[TestInfected, CodeUnitTestFirst, AcceptanceTests, ContinuousIntegration]
No integration woes, no "callbacks instead of Observer" woes, continuous reviews, continuous design, managers who know the status of the project in detail, and who manage the schedule by selecting features.