Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Book: The Effective Engineer: Chapter 7 - Improve Your Project Estimation Skills #25

Open
tlylt opened this issue Jan 24, 2023 · 0 comments
Assignees

Comments

@tlylt
Copy link
Contributor

tlylt commented Jan 24, 2023

Book: The Effective Engineer

Chapter: 7 - Improve Your Project Estimation Skills

Summary:
Good software estimation skill goes a long way to help an engineer plan and execute a task ontime. Well estimated projects bring no surprise to the entire team. The chapter provides comprehensive analysis of the reason why engineers under/over estimate a project's completion time and how to improve on their estimation skills.

Ways to estimate accurately

  • decompose the project into grandular tasks that are easier to estimate. We are good at estimating small tasks!
  • understand that different people may make different progress on the same task, hence, it is best to let the person doing the task provide the estimate
  • describe estimates with probability
  • avoid anchoring by not providing ballpark figures that may influence the estimate
  • beware of the mythical man-month
  • cross-check with historical data
  • limit the scope of the project
  • constantly challenge and review the estimate

Allow buffer room for the unknown in the schedule. This is necessary regardless of how well the estimate is. Unexpected things will happen, and we should be prepared for it. The unknowns could be:

  • uaccounted improvements and refactoring in the process
  • additional duties outside of time planned for the project
  • one-off interruptions for personal and company reasons

After having an estimate, create measurable milestones to keep everyone on track. With a clear goal:

  • features and bug fixes can be properly prioritised
  • teams can understand the impact of local tradeoffs
  • progress can be evaluated

Tackling the riskest tasks in the project can help reduce surprises. Working on easy tasks could provide a false sense of security. One of the risky projects is system rewrite.

Lastly, know the danger of overtime. When working overtime to meet a deadline, it could happen that the project is grossly underestimated. Spending more time on a project after the deadline may be equivalent to sprinting in the middle of a marathon - you are not going to get there!

@tlylt tlylt self-assigned this Jan 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant