This is especially strange considering that Code — the other half of Design that makes up a Product and usually stays in background for the end user — Code never seeks perfection and is in a constant state of iteration. Coders are also generally not afraid of sharing their incomplete, imperfect code openly (simply look at Github, Codeshare, Gitlab, Codepen etc).
The goal is to allow developers and PMs to give buffer time for tasks they cannot fully imagine yet, and use existing estimates for common tasks (such as login pages). Another observation is that even though every product is different, some common tasks will always remain just as time-consuming. We should not try to rush for “optimization” just to cut costs. EBS and task tracking on a spreadsheet has also helped us quickly identify recurring delay patterns with certain types of features. Having evidence helps us track patterns so we can better understand our working styles. However, every project is a new project.
We did learn something else interesting: more experienced developers don’t necessarily estimate better. One possible reason is because we delegate complex features to them. Even with detailed planning, there is a high level of uncertainty. Issues need to be addressed as development progresses.