It's Never Finished

If they’d just give us time to finish it…

It’s never finished.

Read that again. You’re not writing TeX. You may have a bold vision for how this API will develop, and that’s fantastic. But you still need to deliver on that vision one step at a time, and every iteration needs to be useful and maintainable.

“This will be painful in the short term, but it’ll get better when we deliver version 2.”

— Developer Destined for Disappointment

It’s hard to find the time to deliver version 2 if you spend all your time putting out the fires of version 1. Always assume that the next milestone you deliver is going to be the last.

Sometimes that’s a tradeoff you’re willing to make. Sometimes the market opportunity is too important and the company ceases to exist if you don’t cut that corner and create a maintenance nightmare. But understand the costs and don’t kid yourself that you’ll get time to go back and fix it. If your company is on a knife’s edge when you make that tradeoff, it’s quite likely that you’ll still be in crisis mode next month.

The best you can do is question very hard whether you really need that one feature, and whether there are any more maintainable alternatives that are almost as good.