- Human uncertainties (multiple different teams building single large software system)
- Scope uncertainties (we don't know what we are actually building until we get into the weeds)
Outside of these we should be able to make reasonably accurate (+/- 30%) estimates. I wrote a blog [1] about it if someone is interested but here are the main takeaways,
- Don't just estimate writing code but also include time required for testing, documentation, communication, setting up infra/deployment
- If certain part is hazy ("is there a reliable python library for speech to text") then research it enough to know the path ahead
- Breakdown the system into smaller units until you feel confident to estimate each piece
- Technical uncertainties (e.g. self driving cars)
- Human uncertainties (multiple different teams building single large software system)
- Scope uncertainties (we don't know what we are actually building until we get into the weeds)
Outside of these we should be able to make reasonably accurate (+/- 30%) estimates. I wrote a blog [1] about it if someone is interested but here are the main takeaways,
- Don't just estimate writing code but also include time required for testing, documentation, communication, setting up infra/deployment
- If certain part is hazy ("is there a reliable python library for speech to text") then research it enough to know the path ahead
- Breakdown the system into smaller units until you feel confident to estimate each piece
[1] https://blog.amirathi.com/2018/02/05/science-of-software-est...