Estimating the development required for a software product is quite different to estimating a project or single feature, so this is part 2 to ‘Estimating a software project‘, which suggests quite a different model for estimating when it comes to new products.
A product estimate has to be based on a roadmap, so is really a series of estimates. This would be easy if only the roadmap was clearly defined, but at the inception stage of a product, the roadmap is often being driven by the estimates, so its a big catch-22.
To provide an estimate for a software product, I use the following model:
1. Understand the objectives of the product
This is important because to create an estimate that has any value, you’ll need to divide and conquer and a good way of doing this is to create a model. As soon as you start doing this, you’ll have to start making decisions. Decisions about scope, features, roadmap, business rules, use cases etc. Its important that all of the stakeholders are clear about the objectives, so that every decision you make can be aligned with the objectives, giving you a stable foundation on which to build a model of the product.
How do you know that the objectives are stable and valid? They should be inline with your strategy, which should be inline with your mission, which should be inline with your vision. If they’re not, then they’re likely to change, in which case you’ll base your entire estimate on the wrong decisions.
2. Understand the business goals and targets
How long have you got to reach break-even? How well do you know your target market? How well do you know the competition? How confident are you in your business model? How long is the window of opportunity for the product? What are the barriers to entry? Does the product need to prove itself in the market to secure funding?
Questions like these will drive the business goals which will drive the schedule of milestones that need to be achieved, so its important to have a good enough understanding so that you can create realistic road-map schedule.
3. Set a road-map schedule
For an unfunded concept, its likely that you’ll need to have a beta version out within 3-6 months, a limited release within 3 more months and a v1 release after another 3 months. The beta product will be validating the market and proving the concept and opening the door for further funding, so hitting the business targets is vital.
4. Estimate the available resource
Working backward from the schedule, there are two main factors: features and cost. You either let features drive the cost, or more likely, let the cost drive the features. A good rule of thumb is that the cost will be 7 x the development cost – whether you plan for this up front, or end up paying for it later with delays and maintenance issues or even worse – incorrect features that have to be rebuilt.
5. Work backwards to identify what can be achieved in each milestone
Once you know what development resource you’ve got, you can estimate what is feasible to deliver in each milestone. This part will take some real work to actually build a model of the product and use the objectives to identify what the key v1 features are and what is necessary to prove the product in the market.
If the numbers don’t stack up – then its a better time than ever to realise that the product is either under-funded, under-resourced, too big or you have wrong business model and either fix it, or not waste your time & money on it.
Its also important to remember that this is inception only, and once done, there is a valid go/no-go decision that needs to be made. The right answer may be to abort the product, or to proceed to the market proof stage. After 6-12 months, the product should have proven itself , so there will be another go/no-go decision. From here, the ‘go’ decision will need to have real funding behind it to commercialise the product and take it from ‘concept to profit‘.
The bottom line is: you’ll be making hundreds of decisions through-out this process, so its important that they are aligned with the objectives and to understand that everytime one of these decisions is changed, you are departing from your estimate, which is going to happen because you have to be agile and adapt daily, but you also need to be aware of how fast the initial estimate will become worthless!