A mistake less experienced software engineers make when it comes to estimations:
They break out maintainability/quality. Eg “building the feature is 2 weeks, adding automated tests another 3 days”.
What follows by less technical stakeholders is a push to remove the latter.
Non-functional requirements like correctness, quality, maintainability, performance etc should be baked into estimates, and not made part of bargaining. That bargaining is how sw can become less maintainable over time.
@craignicol @gergelyorosz agree.
Estimating itself is :
take a guess, double it and take it to the next unit.
(5 minute job = 10 hours)