Uncertainty increase development effort 
Tags: estimation, productivity, engineering
Published: 2021-08-19 08:26:28

### Background
Currently i am working in a sprint-based squad, and recently at work i have been involved in quarterly planning on how to schedule sprints for squads for the rest of the quarter. You might think this is tedious process, but it is helpful in term of coordinating effort between multiple division, so that other division. 

One of the problem we encounter is translating from estimated story point of each effort, to a precise schedule on when effort would be finished. We could do this by making translation between Story Point to Man-Days, and then from each Man-Days to precise schedule according to each squad composition.

| Story Point | Man-days |
| ------------|:--------:|
| 1 | 0.05 |
| 2 | 0.1 |
| 3 | 0.25 |
| 5 | 0.5 |
| 8 | 1 |
| 13 | 2 |
| 21 | 4 |


### Uncertain Estimation
We can say uncertainty in estimation as chance for an estimation to deviate from original estimation. Like 10 % chance for story point to go up or down from original estimation.
![Infographic 10%](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e64tdlkjynpgkujoimp2.png)

How would this uncertainty effect development effort? Turn out it generally increase effort due to higher story point generally take longer time to finish than lower story point.

For example, let's take estimation of a task as `8` with 10% chance ± `5` story point. Expected Man-Days for the task to finish would be:
1. `80% * Man-Days(8 SP) + 10% * Man-Days(3 SP) + 10% * Man-Days(13 SP)`.
2. `80% * 1 + 10% * 0.25 + 10% * 2`.
3. 1.025 Man-Days, which is higher than perfectly certain Man-Days(8 SP) = 1
4. Hence uncertainty increase effort, even though Average expected complexity still same.




### Effect of Higher Uncertainty toward increased effort
We could also label these chances of change and calculate expected increase of effort, like:

| Label        | Chances        | Avg Increase of effort |
| ------------- |:-------------:|:------------------:|
| Perfectly certain | 0% chance of change | 0% |
| Certain      | 10% chance of 1 level of change |2.5% |
| Uncertain | 20% chance of 1 level of change, 5% chance of 2 level of change | 12.5% |
| Highly Uncertain | 25% chance of 1 level of change, 10% chance of 2 level of change | 27.5% |

### Afternote
1. This article is inspired this talk about statistical consequence of fat tail: https://www.youtube.com/watch?v=_8j1XZ0N_wE
2. I am using normal distribution here, giving equal chance for story point to be added and to be reduced. Given well recorded tendency for software developer to underestimate, probably log normal distribution would be better

#### Detail of calculations for Higher Uncertainty vs Effort
In which 1 level change is based of Fibonacci change, `F(N+1) - F(N) = F(N-1)` which for 8 Story Point it is 5 Story Point.
2 level change is `F(N+2) - F(N) = F(N+1)`, which for 8 SP it is 13(!) SP, up and down (for down, it would make it goes to -5, for Manday we will treat it as negative Man-Day(5)).

| Story Point | Perfectly Certain MD | Certain MD | Uncertain MD | Highly Uncertain MD|
| ------------|:--------:|:--------:|:--------:|:--------:|
| 1 | 0.05 | N/A | N/A | N/A | N/A |
| 2 | 0.1 | N/A | N/A | N/A | N/A |
| 3 | 0.25 | 0.26 | N/A | N/A | N/A |
| 5 | 0.5 | 0.51 | 0.545 | N/A |
| 8 | 1 | 1.025 | 1.125 | 1.275 |
| 13 | 2 | 2.05 | 2.25 | 2.55 |
| 21 | 4 | 4.1 | 4.5 | 5.1 |