Collaborate, don’t fight!
I thought about a project I’ve been in, where we worked in a strict buyer-producer fashion, with the project manager acting as the middle-man between the buyers and the producers (the programmers). In hindsight, it seems obvious that the more separated the buyer and producer, the more each part has to be defensive and the more formal the process must be, especially concerning the specification of requirements and acceptance testing.
Had it been a project where buyer and producer worked in tight collaboration, things would have run a lot smoother. Instead, the buyer constantly asked: “When will you be done?”, for which the reply from the producers always was: “It depends on you!” Also, every testing effort on the buyer’s end resulted in a completely unfiltered stream of change requests, which brought down the speed of the producers. The producers in turn yearned for more formal testing, with detailed reports and instructions on how to reproduce bugs, etc.
Also, we felt that the specification of requirements, delivered incrementally in oral discussions throughout the project, all through the end, should be formalised and delivered in neat chunks and clearly not considered as part of the release we were currently working on. Being fans of XP, this is clearly not the way we want to work, but given this strict separation of buyer and seller there seems to be no alternative to formalising the interaction and acting defensivenely towards the other part. This is neither creative nor effective.