This is a short story about two software development companies. Let’s call them Alpha and Bravo. Both companies received an RFP (Request for Proposal) to develop custom help desk software. After careful review of the respective proposals, the client selects Alpha for the project. Six months to the day after signing the contract, Alpha delivers exactly what was proposed. However, the client is very unhappy.
During the course of development, the client discovered additional features which Alpha failed to include in the final product. The client renegotiates their contract with Alpha, and four months later, Alpha delivers a product that satisfies all the requirements. But the client is still unhappy. Why? Because during the ten total months of development, a new version of the user interface standards were published. Back to the drawing board. Again. You see where this is going, right?
Now let’s suppose Bravo won the contract instead of Alpha. Because Bravo doesn’t believe in deadlines, they convince the client to accept six incremental deliveries of the product, instead of a single release at the end. One month after commencement, Bravo delivers a minimal but functional, tested, and documented version of the system. The client, after using this early version, notes some usability changes they would like made. They were only able to identify these changes after working with the software. Bravo incorporates the client’s feedback and a month later delivers another iteration to the client. The client is very happy to see rapid progress, and mentions the upcoming changes to user interface standards. Bravo updates the following iteration to adhere to these standards, and delivers a working system in five months, not six. The customer is delighted.
Alpha delivered a new product for their client after six months. Bravo delivered the same product incrementally over five months. Did the customer have to work a little harder with Bravo? Sure. Did they get everything they wanted with Alpha? No way.
All software projects must contribute to the customer’s business case to the maximum extent possible. Throughout a project, the team must always build the most important features first, as defined by the customer. This approach requires significant customer involvement, continuing for the duration of the project, allowing the early and continuous delivery of value to the customer.
© 2016 by Mark Richman. All rights reserved.