So here's my issue. It's a long standing issue that I've always had, but has never really been an issue until now. I was given a big project for a big company for a big eCommerce platform. The extension I wrote will soon be released to the masses for consumption and use.<p>Now here's the problem. I keep looking at the code and trying to find bugs, add more little snippets of validation, etc. I keep finding ways that I can make parts of the extension better in some way. All the code is completely commented and I keep finding ways to make the thing better (or at least I think I am).<p>Does anyone else ever do this kind of thing? When do you say it's "complete" and move on to the next project? This extension works and works well, and has been tested all kinds of ways. I'm not the type of person to half ass a project and this is for a very large company and I really don't feel like making the company I work for nor my self look bad.
You can look at this as more of a "philosophical" question. Is software ever really "done"? There will be much back and forth, I don't think this question is really answerable. If you need to hand it over to someone else; then yes. Once it matches the specs that they intended for it, then I would consider it done.<p>If you wish to continue making changes as you come up with them; that's perfectly fine, but remember the more that codebase changes, the higher the likelihood that something can (and will) go wrong.<p>It's a good question and this will certainly drum up a good discussion here, I look forward to seeing what everyone else says.<p>bw
While I strongly agree that no product is ever finished and improvements can always be made, I do want to make a statement in regards to a comment you've made in reply about "more to add". Sometimes improving means removing as well and sometimes it does mean adding, or just changing something. It depends.<p>That said, just because adding something makes the product better, does NOT mean it always make sense. There was a story about another company who, because of customer feedback, ended up building a bunch of features into one of their products. Turns out, only a small minority of their userbase even cared to use those features and that the mass majority were fine with the features that were already there. In hindsight, they said it was wasted time and resources and really didn't add much to the bottom line.<p>Also, rather than believe what you're doing is "better" or an "improvement", things should be split tested and verified as to whether you should spend time and resources. While I don't disagree that you can do more with any given product, the question you really should be asking is are you wasting your own time and that of your employers with these things you want to improve or add. Remember, opinions don't mean shit. Hard data does.
The only finished projects in my opinion are failed projects.<p>Successful projects are never finished. You need to keep working with them and making them better to improve your offering so that you can retain your users and keep your competitive edge.
A product is never really "complete". Your personal "completion" date will be when the responsibility for support, modification, and enhancement is transferred to someone else. There will always be room for improvement in any product, but we all need to eventually step back and see where our efforts will have the greatest value.<p>Eventually, there will be a new unit of work for you to tackle with a bigger payoff for your time. The transition is not instantaneous... gradually, that new project will consume more of your energy, until it becomes your main focus.