Thursday, December 4, 2008

Meet the contract or provide customer value?

"customer collaboration over contract negotiation"
- The Agile Manifesto


I once worked in a project that consisted in implementing a major new module in a complex system by a customer request. It was very difficult to get any decision from that customer: any request made to their representative would take on average a week to be answered, because he needed to discuss it and get internal signoff from several stakeholders.

Still, we didn't want to follow a waterfall approach, so the development process involved several cycles of customer feedback. We started with a concept implementation that was demo'd to the customer; then, based on the feedback from the demo we came up with an initial specification. The specification validated with the customer representative and we set out to implement the missing gaps. This cycle repeated a few times, and from the customers' feedback we found new requirements, that were reflected into new design that we factored in the code.

Late in the project we realized that, in order for the new module to be useful, we would have to implement something that was not requested by the customers themselves. But at that point we would not have time to implement that extra functionality by the deadline. The development team pushed really hard to get that functionality done, but the decision that was taken by management was to cut part of the functionality in order to meet the deadline.

By doing so, the company met its contractual obligation, it got paid, and it didn't incur in any penalties it could have incurred if we had missed the deadline. The customers got what they thought they wanted, but we failed to provide the maximum business value and, as result, the new functionality was barely used. But how do you convince management to miss a deadline that is established by contract, especially when the customer explicitly enforces it?

It goes to show that agile methods are not only about good engineering practices, but also about a cultural change in several levels of an organization, and sometimes even in other organizations that you interact with. For agile techniques to succeed, a company needs to change the way it does business.

0 comentários: