A Software Consulting Conundrum: Providing Estimates While Staying Agile
As a software consulting firm, Grio strives to provide high quality, high value software to its clients. We embrace an agile software development methodology based on Scrum. This iterative approach provides our clients with flexibility to adapt and change their product over the course of development as discoveries are made while using the software.
This flexibility can prove challenging when providing up front estimates regarding project costs. The problem arises that providing an estimate that is too high may lose you the contract; Estimating too low can result in several outcomes:
- Charging the customer for the additional hours, possibly causing customer dissatisfaction
- Cutting scope to stay within budget, also causing dissatisfaction
- Comping the customer for the extra hours, affecting margins
As you can see, none of these are particularly desirable outcomes. So how can we provide more accurate estimates while still using an agile process?
Well, the bottom line is that this is very difficult to do while maintaining a true agile process. The solution we have come up with is to modify the agile process to put some more up-front discovery in place, as well as educate clients on the benefits of agile development and how that can affect project cost both positively or negatively. We also emphasize the delivery of working software in an iterative fashion.
For our clients that are new to software development, this can be challenging to effectively communicate. Clients sometimes use the analogy of ‘building a house’ in comparison to building a software application. However, there is very little in common in the two endeavors. The very nature of software and the flexibility and ease of change is much different than the rigidity of creating physical objects. Having the ability to easily change things is a great thing, but it also can lead to project delays and inaccurate estimates.
The bottom line is that software sizing and estimation is tough, particularly in the consulting business. My advice is to be as transparent as possible with your clients, and work closely with them to meet budgets and timelines throughout the course of the project. Make sure you are address these issues and how you are tracking during your iteration review meetings. By keeping your clients informed, they can make decisions regarding costs, features and schedules while remaining agile.