You are a software developer! Don't answer misleading questions! Instead, help your manager to ask the right question. Then, answer the good question.
When will my feature be ready? is a misleading question. Examples of good questions are:
- What's the probability of having my feature in three months?
- What's the date by which I will have my feature ready with a probability of 70%?
Now, how would you answer these questions once they are asked? Well, you will have to use your records to build an empirical probability distribution of the random variable DevTime
. I've done this myself and have found that Lognormal distributions have an excellent fitting.
A Lognormal distribution has two parameters: mean and standard deviation. Alternatively you can define them by providing mean and the dispersion P90/P10.
There are many approaches to find out good estimates of the mean and the dispersion. If you have data of other projects with similar scope, use them and use some curve fitting algorithm (e.g., BoxCox.)
If you want to be more rigorous you will need to build some model that should take into account the following uncertain factors:
- Size of project
- Focus - % resources you will allocate for the project (you have other tasks, right?)
- Endurance - % of lines of code integrated that survived, say, >= 6 months
- Speed - Lines of code (or # classes) produced by the team / day.
For the size I've used the number of classes involved as a proxy, have put a Triangular Distribution around it, and have multiplied this random variable by the (empirical) distribution of #menthods/class.
The focus is easier, I would start with 40%. You can use this parameter to negotiate with your manager.
What I've called endurance is measurable from your historical data. Again, don't use an average, compute the empirical probability distribution of this quantity.
Same for speed.
With all these distributions is fairly easy to build a probabilistic model and run Monte Carlo on it. That will give you the values of mean and dispersion you were looking for.
Once you have the distribution, plot it and teach your manager how to read it. The answer to all the questions that make sense will be right there.
If you don't have any data, or you don't have the time & resources to build the model I'm proposing, then play with your best "expert" estimates of the mean and dispersion and use some app to plot the resulting Lognormal distribution. Once you feel confident with one curve, use that for your poor-man estimations.
Bottomline: Don't answer silly questions. Turn them in good ones that will provide insights.