

Ask HN: How do you 'finish' your projects? - f1gm3nt

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.
======
bradfordw
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.

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.

It's a good question and this will certainly drum up a good discussion here, I
look forward to seeing what everyone else says.

bw

~~~
f1gm3nt
Yeah, it works and thus it's done. It's meet the specs, but it seems I can
always find something more to add. It would add more complexity and the age
old KISS method should come into play here.

I like the idea of thinking of this as a philosophical question. When asked
like that. Is any of the code we write complete? Makes me ponder since I see
open source projects go on for years =)

------
us
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.

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.

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.

------
JonathanWCurd
The only finished projects in my opinion are failed projects.

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.

~~~
stonemetal
There are other reasons for done besides failure. The original "super mario
brothers" game is done and not a failed project. When holograms become the
next big thing in TV flat panel TVs will be done, and not a failure. Projects
are done when they are no longer needed. One cause of "no longer needed" is
failure but certainly not the only one.

~~~
JonathanWCurd
Good point. I was being very narrow sighted on that.

------
MagnusRose
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.

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.

------
gs8
No project is ever finished. Once it meets the basic requirements given to you
before starting, it is finished. Bug fixes are an ongoing process.

