Surprise leads to dissatisfaction. This leads to the lowering of expectations. If the expectations dip so low that the value created by the vendor does not justify the cost, then that is the end of the customer-vendor relationship.
Success in any customer engagement comes down to No SURPRISES in software engineering.
The surprise can occur at any stage of customer engagement. For starters, there is a sticker shock when the vendor delivers the proposal. A meeting describing the functions and schedules is in order, before the vendor submits the proposal. This can also be discussed in initial introductory meetings.
Once the project starts, then there is a schedule shock. “Everything is easy for the person who does not have to do it” – so goes the Murphy’s Law. To make sure both parties are on the same page, the vendor should take a holistic view of the customer product eco system. This will reduce any compatibility issues after delivery. Vendors need to predict customer requests before they happen. Knowledge of customer products and the domain will help with this. Vendors should not hesitate suggesting alternate solutions to the customers. The customer whether technical or not, will never be as close to the product as the vendor, who develops it. Setting up a customer advocacy group helps.
Software services companies spend a lot of money on “no surprises”. The typical approaches are investing in processes, padding resources and customer visits. They can be classified in proactive (processes) and reactive (padding resources) approaches. The best way to prevent surprises is proactive. Padding resources can help in the event of attrition, but this is an expensive option. Adoption of Agile methodology makes it easy to induct a new team member in the team in the event of attrition.