Estimating Software Projects
Software Estimation: Demystifying the Black Art
{
"type": "unordered-list",
"id": "edc11a1d-6e9a-4e57-835e-d3e7f8ec228d",
"items": [
{
"id": "edc11a1d-6e9a-4e57-835e-d3e7f8ec228d",
"content": [
{
"type": "text",
"content": "Book: Steve McConnell"
}
]
}
]
}Terminology
{
"type": "unordered-list",
"id": "2f3516b4-31a9-41e5-bfe4-dd573406e358",
"items": [
{
"id": "2f3516b4-31a9-41e5-bfe4-dd573406e358",
"content": [
{
"type": "text",
"content": "Estimate:",
"styles": [
{
"type": "bold"
}
]
},
{
"type": "text",
"content": " A tentative evaluation or rough calculation. A preliminary calculation of the cost of a project in time or money. An estimate is based on your opinion"
}
]
},
{
"id": "99e30dc6-8206-4413-bb71-aefcdd7b77fd",
"content": [
{
"type": "text",
"content": "Target:",
"styles": [
{
"type": "bold"
}
]
},
{
"type": "text",
"content": " A target is a statement of a desirable business objective. “We need to release MongoDB by July 14th for Daniel’s talk”"
}
]
},
{
"id": "f2595bd8-4786-4a0b-a94c-40a8b8993bce",
"content": [
{
"type": "text",
"content": "Commitment:",
"styles": [
{
"type": "bold"
}
]
},
{
"type": "text",
"content": " A promise to deliver defined functionality at a specific level of quality by a certain date."
}
]
}
]
}When executives ask for an “estimate”, they’re often asking for a commitment or for a plan to meet a target.
Estimates are Inputs to Planning
Estimation should be treated as an unbiased, analytical process. Planning should be treated as a biased, goal-seeking process.
The goal of an estimate is accuracy. You should not come into the estimation process with a particular answer in mind.
If the estimate takes longer than the target, the plan needs to recognize the high level of risk involved.
Combining estimating with planning tends to lead to poor estimates and poor plans.
{
"id": "698e9863-d910-4310-b694-6c252ca110ce",
"type": "quote",
"content": [
{
"type": "text",
"content": "Tip: When you’re asked to provide an estimate, determine whether you’re supposed to be estimating or figuring out how to hit a target. \"Do we need to have 100% of these features or do we need to hit this target date?\""
}
]
}Estimates are a Probability Distribution
While there is a limit to how well a project can go, there is no limit to how poorly a project can go, and so the probability distribution does have a very long tail on the right.
{
"id": "2d4930c5-261b-4e60-abdb-18acac006ef3",
"type": "image",
"url": "https://prod-files-secure.s3.us-west-2.amazonaws.com/a0e28483-01ab-4009-81c1-3139fd1424a5/92cc7319-6d93-456f-8825-b22556bdecc5/CleanShot_2021-07-05_at_19.48.012x.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Content-Sha256=UNSIGNED-PAYLOAD\u0026X-Amz-Credential=ASIAZI2LB466YFKF3GCK%2F20260601%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20260601T054029Z\u0026X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDkaCXVzLXdlc3QtMiJFMEMCHwvGjjiHUyIav0%2BOAyv8XmYh2ge1abrVeJ0eAuJ47noCIATNme9uCrNECRyrSSYWhHhhlbJ66ezjpMlA4reZtVB%2BKv8DCAIQABoMNjM3NDIzMTgzODA1IgxZV0WKMYHKLuM7z1gq3AN6ml5U%2BAx9Sbm1gGNQrKf8sPO0Gj2nLF17%2FyJBjDeev5npphFZH8MaTKUKEw4%2FU2vUC07%2B7llfDYaHPjZU1EDldHuL3%2BMVl6h5v0qc2xj5sZeA1VQ8ydZkosx9g94ug7UEjlRhHK%2FPpFXd%2FzswjbTxu2wLbQH%2BmwzkxuVK4d3EHxLAZmGh1F1CsECZ%2F8UXK5fPDl5hw0S62Pd%2F5Zg%2F3MeWUwIiRLEE9HNY5FGUb9%2BwUZk1SLz1FyVxKBjvZkzmFBVVNw7u4nXtaTrV3p65k3og%2FQKszDiksShfIkBfEpEG5qGYn43WtdyfQo5n45QkEKhQ6CPTTFFm4%2BMSbmAWSMXSZSk1JmfGAvOjm9CuLY%2FZHrKDHsT%2BaFekuNns9F8870eeAZLRqPEbkbadh303XclCLMA5SUdNrspEh1nGwp6aBURNzqCIbA4LbGif116%2BUsOxb4XDKdBtVO%2BQYiKPnruNE0trZfywXNyHglTvASwlaDJ%2FMTbPIB6n8NMCKzLwG5%2BITj66v%2B5yVVHQ5UEFa2VrGLuXaTZm2FSeD3VJMiV1bowtGziGvWE0PzhWyubkAqMnKAp3i%2FlZ888phFIBLhSpnBtnSP%2FS6P3fu3N8noUA29WJex3mDfcY2kmFLzD%2BpvPQBjqnATeoHAWAZ57etvQeyp4h6ZsJfDNBSr%2FwOebWeuj4lfYEzsw4%2BvH%2FQEE2HaHXasgSucdF%2FGwTTG%2FOeJvLvQqt6WvpEL44UN0OY5UBDqOCexW53WelROfZDJ8JI5rNFU5Rq%2BMWslBw2x%2Bu1IzcaG7z%2BrLaClywSvp78dhbMmaN15iAb1AvoXf8j7S7p8nz7crreihPHyMoACL555Zz0j8uuHNItRhkrTbq\u0026X-Amz-Signature=bf94fa2e7cf0636709c6ef4bf4f672d6f93096adae3c45d17c2b866a3d200e4a\u0026X-Amz-SignedHeaders=host\u0026x-amz-checksum-mode=ENABLED\u0026x-id=GetObject",
"caption": [
{
"type": "text",
"content": "An accurate depiction of possible software project outcomes. There is a limit to how well a project can go but no limit to how many problems can occur."
}
]
}{
"id": "36585afb-827b-4f37-ba36-d9fa15ff94de",
"type": "image",
"url": "https://prod-files-secure.s3.us-west-2.amazonaws.com/a0e28483-01ab-4009-81c1-3139fd1424a5/962a9cf8-2de1-4f55-ab83-2d4a14db8a6d/CleanShot_2021-07-05_at_19.48.052x.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Content-Sha256=UNSIGNED-PAYLOAD\u0026X-Amz-Credential=ASIAZI2LB466YFKF3GCK%2F20260601%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20260601T054029Z\u0026X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDkaCXVzLXdlc3QtMiJFMEMCHwvGjjiHUyIav0%2BOAyv8XmYh2ge1abrVeJ0eAuJ47noCIATNme9uCrNECRyrSSYWhHhhlbJ66ezjpMlA4reZtVB%2BKv8DCAIQABoMNjM3NDIzMTgzODA1IgxZV0WKMYHKLuM7z1gq3AN6ml5U%2BAx9Sbm1gGNQrKf8sPO0Gj2nLF17%2FyJBjDeev5npphFZH8MaTKUKEw4%2FU2vUC07%2B7llfDYaHPjZU1EDldHuL3%2BMVl6h5v0qc2xj5sZeA1VQ8ydZkosx9g94ug7UEjlRhHK%2FPpFXd%2FzswjbTxu2wLbQH%2BmwzkxuVK4d3EHxLAZmGh1F1CsECZ%2F8UXK5fPDl5hw0S62Pd%2F5Zg%2F3MeWUwIiRLEE9HNY5FGUb9%2BwUZk1SLz1FyVxKBjvZkzmFBVVNw7u4nXtaTrV3p65k3og%2FQKszDiksShfIkBfEpEG5qGYn43WtdyfQo5n45QkEKhQ6CPTTFFm4%2BMSbmAWSMXSZSk1JmfGAvOjm9CuLY%2FZHrKDHsT%2BaFekuNns9F8870eeAZLRqPEbkbadh303XclCLMA5SUdNrspEh1nGwp6aBURNzqCIbA4LbGif116%2BUsOxb4XDKdBtVO%2BQYiKPnruNE0trZfywXNyHglTvASwlaDJ%2FMTbPIB6n8NMCKzLwG5%2BITj66v%2B5yVVHQ5UEFa2VrGLuXaTZm2FSeD3VJMiV1bowtGziGvWE0PzhWyubkAqMnKAp3i%2FlZ888phFIBLhSpnBtnSP%2FS6P3fu3N8noUA29WJex3mDfcY2kmFLzD%2BpvPQBjqnATeoHAWAZ57etvQeyp4h6ZsJfDNBSr%2FwOebWeuj4lfYEzsw4%2BvH%2FQEE2HaHXasgSucdF%2FGwTTG%2FOeJvLvQqt6WvpEL44UN0OY5UBDqOCexW53WelROfZDJ8JI5rNFU5Rq%2BMWslBw2x%2Bu1IzcaG7z%2BrLaClywSvp78dhbMmaN15iAb1AvoXf8j7S7p8nz7crreihPHyMoACL555Zz0j8uuHNItRhkrTbq\u0026X-Amz-Signature=2a809ea8e8b92e54ceef6042b4888c0cc0566362627f47c0eef4daca547a315d\u0026X-Amz-SignedHeaders=host\u0026x-amz-checksum-mode=ENABLED\u0026x-id=GetObject",
"caption": [
{
"type": "text",
"content": "The probability of a software project delivering on or before a particular date (or less than or equal to a specific cost or level of effort)."
}
]
}{
"id": "f2345e33-b00b-4bfa-810b-6af863a43322",
"type": "quote",
"content": [
{
"type": "text",
"content": "Tip: When you see a single-point \"estimate,\" ask whether the number is an estimate or whether it’s really a target."
}
]
}Estimates Influence and are Influenced by Project Planning
Once we make an estimate and, on the basis of that estimate, make a commitment to deliver functionality and quality by a particular date, then we control the project to meet the target.
Projects change significantly from inception to delivery. Changes are usually significant enough that the project delivered is not the same as the project that was estimated. Nonetheless, if the outcome is similar to the estimate, we say the project met its estimate.
Planning is like Packing a Suitcase
You can go with the small suitcase that fits in the overhead compartment or the large suitcase which you need to wait for in baggage claim. You can only pack your clothes so tight and cram your suitcase so much before you need to switch to the larger suitcase.
This is the same with software projects. If the estimate is close to the target, you might be able to make it fit. If it’s far, you’ll need to reconsider what you bring (e.g. features) or change the target.
If target and estimate and estimate are within 20%, project owners typically have enough leeway by controlling the feature set, schedule, team size, and other parameters to meet the project’s business goals
A Good Estimate
A good estimate is an estimate that provides a clear enough view of the project reality to allow the project leadership to make good decisions about how to control the project to hit its targets.
Software Estimation in an Agile World
{
"type": "unordered-list",
"id": "e59f40d8-8692-4f67-8444-2dc08188c1e3",
"items": [
{
"id": "e59f40d8-8692-4f67-8444-2dc08188c1e3",
"content": [
{
"type": "text",
"content": "Youtube: "
},
{
"type": "link",
"content": "https://www.youtube.com/watch?v=5Xwb0X-Obx8",
"url": "https://www.youtube.com/watch?v=5Xwb0X-Obx8"
}
]
}
]
}{
"id": "41e2f99b-38a6-4aa0-b564-d8c6f710fd5a",
"type": "image",
"url": "https://prod-files-secure.s3.us-west-2.amazonaws.com/a0e28483-01ab-4009-81c1-3139fd1424a5/29d1664d-3345-40f4-8d43-47e8963e9923/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Content-Sha256=UNSIGNED-PAYLOAD\u0026X-Amz-Credential=ASIAZI2LB466YFKF3GCK%2F20260601%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20260601T054029Z\u0026X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDkaCXVzLXdlc3QtMiJFMEMCHwvGjjiHUyIav0%2BOAyv8XmYh2ge1abrVeJ0eAuJ47noCIATNme9uCrNECRyrSSYWhHhhlbJ66ezjpMlA4reZtVB%2BKv8DCAIQABoMNjM3NDIzMTgzODA1IgxZV0WKMYHKLuM7z1gq3AN6ml5U%2BAx9Sbm1gGNQrKf8sPO0Gj2nLF17%2FyJBjDeev5npphFZH8MaTKUKEw4%2FU2vUC07%2B7llfDYaHPjZU1EDldHuL3%2BMVl6h5v0qc2xj5sZeA1VQ8ydZkosx9g94ug7UEjlRhHK%2FPpFXd%2FzswjbTxu2wLbQH%2BmwzkxuVK4d3EHxLAZmGh1F1CsECZ%2F8UXK5fPDl5hw0S62Pd%2F5Zg%2F3MeWUwIiRLEE9HNY5FGUb9%2BwUZk1SLz1FyVxKBjvZkzmFBVVNw7u4nXtaTrV3p65k3og%2FQKszDiksShfIkBfEpEG5qGYn43WtdyfQo5n45QkEKhQ6CPTTFFm4%2BMSbmAWSMXSZSk1JmfGAvOjm9CuLY%2FZHrKDHsT%2BaFekuNns9F8870eeAZLRqPEbkbadh303XclCLMA5SUdNrspEh1nGwp6aBURNzqCIbA4LbGif116%2BUsOxb4XDKdBtVO%2BQYiKPnruNE0trZfywXNyHglTvASwlaDJ%2FMTbPIB6n8NMCKzLwG5%2BITj66v%2B5yVVHQ5UEFa2VrGLuXaTZm2FSeD3VJMiV1bowtGziGvWE0PzhWyubkAqMnKAp3i%2FlZ888phFIBLhSpnBtnSP%2FS6P3fu3N8noUA29WJex3mDfcY2kmFLzD%2BpvPQBjqnATeoHAWAZ57etvQeyp4h6ZsJfDNBSr%2FwOebWeuj4lfYEzsw4%2BvH%2FQEE2HaHXasgSucdF%2FGwTTG%2FOeJvLvQqt6WvpEL44UN0OY5UBDqOCexW53WelROfZDJ8JI5rNFU5Rq%2BMWslBw2x%2Bu1IzcaG7z%2BrLaClywSvp78dhbMmaN15iAb1AvoXf8j7S7p8nz7crreihPHyMoACL555Zz0j8uuHNItRhkrTbq\u0026X-Amz-Signature=ef783f48d8fd4182c3cbae6f369a77022528054e4625be8126eceb78a844de06\u0026X-Amz-SignedHeaders=host\u0026x-amz-checksum-mode=ENABLED\u0026x-id=GetObject"
}Story Points vs. Hours
https://www.youtube.com/watch?v=TfPo95bWxU4
Story points are used for estimating the size of a task.
Story points are a relative measure of size and complexity. There's no comparison between story points and days.
"I think this piece of work is about twice as big as that piece of work". If that piece of work is 1 story point, then this piece of work is 2 story points.
Typically, story points are one of the following values on a scale: 1, 2, 4, 8, 16. Anything larger is too hard to estimate, anything other granularities are too hard to compare.
Why Story Points and Why not Hours?
It's easier for humans to compare tasks against each other, rather than estimate the size of a single task.
{
"id": "bf38d7a2-de4f-4d70-a91d-f2f3daf3601e",
"type": "image",
"url": "https://prod-files-secure.s3.us-west-2.amazonaws.com/a0e28483-01ab-4009-81c1-3139fd1424a5/6aac1770-6693-4e9d-b490-f94ebbe01e4f/CleanShot_2021-07-05_at_20.35.122x.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Content-Sha256=UNSIGNED-PAYLOAD\u0026X-Amz-Credential=ASIAZI2LB466YFKF3GCK%2F20260601%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20260601T054029Z\u0026X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEDkaCXVzLXdlc3QtMiJFMEMCHwvGjjiHUyIav0%2BOAyv8XmYh2ge1abrVeJ0eAuJ47noCIATNme9uCrNECRyrSSYWhHhhlbJ66ezjpMlA4reZtVB%2BKv8DCAIQABoMNjM3NDIzMTgzODA1IgxZV0WKMYHKLuM7z1gq3AN6ml5U%2BAx9Sbm1gGNQrKf8sPO0Gj2nLF17%2FyJBjDeev5npphFZH8MaTKUKEw4%2FU2vUC07%2B7llfDYaHPjZU1EDldHuL3%2BMVl6h5v0qc2xj5sZeA1VQ8ydZkosx9g94ug7UEjlRhHK%2FPpFXd%2FzswjbTxu2wLbQH%2BmwzkxuVK4d3EHxLAZmGh1F1CsECZ%2F8UXK5fPDl5hw0S62Pd%2F5Zg%2F3MeWUwIiRLEE9HNY5FGUb9%2BwUZk1SLz1FyVxKBjvZkzmFBVVNw7u4nXtaTrV3p65k3og%2FQKszDiksShfIkBfEpEG5qGYn43WtdyfQo5n45QkEKhQ6CPTTFFm4%2BMSbmAWSMXSZSk1JmfGAvOjm9CuLY%2FZHrKDHsT%2BaFekuNns9F8870eeAZLRqPEbkbadh303XclCLMA5SUdNrspEh1nGwp6aBURNzqCIbA4LbGif116%2BUsOxb4XDKdBtVO%2BQYiKPnruNE0trZfywXNyHglTvASwlaDJ%2FMTbPIB6n8NMCKzLwG5%2BITj66v%2B5yVVHQ5UEFa2VrGLuXaTZm2FSeD3VJMiV1bowtGziGvWE0PzhWyubkAqMnKAp3i%2FlZ888phFIBLhSpnBtnSP%2FS6P3fu3N8noUA29WJex3mDfcY2kmFLzD%2BpvPQBjqnATeoHAWAZ57etvQeyp4h6ZsJfDNBSr%2FwOebWeuj4lfYEzsw4%2BvH%2FQEE2HaHXasgSucdF%2FGwTTG%2FOeJvLvQqt6WvpEL44UN0OY5UBDqOCexW53WelROfZDJ8JI5rNFU5Rq%2BMWslBw2x%2Bu1IzcaG7z%2BrLaClywSvp78dhbMmaN15iAb1AvoXf8j7S7p8nz7crreihPHyMoACL555Zz0j8uuHNItRhkrTbq\u0026X-Amz-Signature=c1db35f15ddb48755089f8103efe010abd360d2a827762dfde54748c2c35d221\u0026X-Amz-SignedHeaders=host\u0026x-amz-checksum-mode=ENABLED\u0026x-id=GetObject",
"caption": [
{
"type": "text",
"content": "The youtube video talks about estimating the size of a wine bottle compared to a wine glass. It's easy to see that the wine bottle is 2 times the size of the wine glass. However, it's hard to know how many centimeters the wine bottle is."
}
]
}Estimating a story is a team effort. It should not be estimated outside the team.
Team Velocity maps Story Points to Time
By measuring how many story points you completed in a given cycle, you can begin to map story points to time with the following formulas:
Story points per cycle is also known as velocity.
This allows you to answer questions like: "When will this team have this 60 point feature delivered?"