Engineer
I committed to shipping a payment processing change in three weeks and missed by a week. Around the start of week two I realized our test coverage on the legacy code was thinner than I had assumed and I was finding edge cases I had not scoped. I told my manager and the product manager that day, with a revised estimate of four weeks and the two specific issues that had surfaced. They were not happy, but neither was surprised. I did not crunch to hide the slip. We shipped at the four-week mark with full coverage and no regressions in the next quarter. If I had crunched to hit the original date we would almost certainly have shipped a partial fix and dealt with it later. What I learned was to flag uncertainty about test coverage on legacy code as a separate scoping line in the original estimate, instead of folding it into the implementation hours.