This article is a guide for product owners on how to set a budget for an Agile software development project. Agile delivery methods are proven to provide a better software market/people fit. A truly agile project dictates that the budget, in this case time of effort is only realised in hindsight. This is contrary to how businesses and cashflow works. We're yet to find a finance officer who is willing to give carte blanche, especially when it comes to software development. Quite rightly so.
This leaves the product requirements owner between a rock and a hard space. Do you multiply the best case by a factor of three, or five...or your worst case...It's a dark art. Often the product owner is left in the middle between the business expectations and trying to ensure the project doesn't overrun. This article won't provide all the answers but we would like to share our learnings.
These learnings come from running a software development services agency in Brisbane. We've grown from 8 employees, to 66 in four years. Along the way we've had to adapt from our mistakes and ensure they're never repeated. The documentation of these learnings has led to the creation of our Way of Working.
Here's an overview of our learnings:
- Understand where an advantage can be won: Behaviour Field Trials.
- Agree to project success trade offs: Fixed Scope, Variable Time.
- Use a scientific risk based estimation method to approximate effort required.
The first is to leverage technology to your advantage. For us, that's the Codebots technology set. A software development platform as a service that writes on average 92% of a target application. It's bots that code. The way they do this is by writing 100% developer readable code based on models. They include the Entity Model (similar to a relational database model), User Interface Model and the Security Model. The Codebots have been trained to write Behaviours from these models that can be applied across any domain and are frequently used in software development. Think...Dashboard, timelines, forms, API's etc.