views:

411

answers:

12

I was just looking at our issue tracker, and out of nowhere came the question: Will this ever be complete? Has any software project ever finished because it is complete?

This has never happened to me. There has always been more features that I could add, or more requests from the customer.

So my question to SO users - did you ever get to the end of a software project? Is that even possible? If you made it, what was it like? Do people have some odd desire to keep the backlog of features they haven't implemented always growing, so they never get to the end? If you assume an environment of constant technological change, is there ever an end, other than obsolescence?

+4  A: 

A software project is finished when people stop working on it.

Ólafur Waage
+1: There's always another feature -- as soon as folks stop asking for features, they're not really using it very much.
S.Lott
I have projects that I worked on 2-3 years ago that I will eventually pick up again and make changes to. How long do I have to not be working on it for it to be done? :-)
tvanfosson
Hm, a little unsatisfactory. Why do people stop working on it?
This is common knowledge about projects, my reply is a changed version of another quote i can dig up
Ólafur Waage
Yes, but what do you do with this standard of readiness? Will it be ready for testing when people stop working on it?
MatthewMartin
@MatthewMartin I don't think you are getting the meaning of the word Finished i am using here.
Ólafur Waage
+1  A: 

I've been working on my software for 3 years, and have ideas that could lead on for another 5 years.

The market could change and new things be added every 3 months (and they do).

Also, as I learn more, I want to make changes to make the code more efficient, the structure more resuable and the user experience better.

ck
Does this address the question?
strager
A: 

The customer may simply run out of money he is willing to spend on a project. Then the project is automatically complete at the stage it is at that moment.

sharptooth
+2  A: 

For software of any real complexity and usefulness, as long as people are using the software, it's never really done. You will reach a point where the value of the desired features are not worth the cost of implementing them and so you choose to leave the code alone until some feature comes along to change the equation (or the cost of doing the development). I have a lot of software in this state, but I would never actually call it done.

tvanfosson
+1  A: 

If you are listening to your users and are commited to incorporating their suggestions into the product then in the sense of an issue tracker it will never be finishied, which is a good thing as you are engaging your users and they are interested in the product.

A product is complete when a milestone is reached, be that the core specification or to meet a release schedule. This isn't a bad thing.

Richard Slater
+4  A: 

It's done when you publish a release that doesn't have to be rolled back. Everything after that is a new project.

MatthewMartin
I like this point of view. +1
Ionuț G. Stan
+4  A: 

It's not just software.

In 2001 I was refitting my kitchen. A friend asked me how it was going; I told him I was nearly done - I'd finish off the last couple of bits at the weekend.

He looked at me, horrified. "What!? You can't actually finish a kitchen!" he exclaimed. "No man has ever finished any DIY job of that size!"

"Think of the consequences!" he went on, "You'll be in the papers! All over the country there'll be women saying 'But what about that guy in Derby? He finished his kitchen - now you finish ours!'"

I considered his points for a while and relented. There's still a little strip of edging that I haven't tidied up just yet. I'll get round to it any year now...

To pull it back to software: once it's good enough for the practical purposes of everyone who'll use it, it's finished. It's just not perfect yet.

Hopefully once it's reached that stage someone'll be paying you to work on something else.

teedyay
A: 

When I start thinking of things I'd like to remove (or, replace), but can't because of "backward compatibility", I know it's time to work on something else. That sure finishes the project.

Kurt Schelfthout
+2  A: 

Software always has dependencies (on hardware if nothing else), so there is always the possibility of future work to keep the software working with new versions of its dependencies.

Therefore all software is either dead, or waiting for future modifications.

Douglas Leeder
I highly agree with the second statement. +1
strager
(Except when the programmer(s) are taking a week break to study for exams, where the project is dormant. =])
strager
The software's still waiting... :-)
Douglas Leeder
+2  A: 

Well we're certainly not going to finish while you're wasting time on SO. Get back to work!

JaredPar
A: 

For complex software the answer is always no. Which is why it is a good idea to design the software so that it's design can be maintained easily and changed if need be.

The key element that will allow you do this is have a good set of unit and integration tests. With that in place you can objectively measure the impact of a fix, addition, or change.

RS Conley
A: 

It is possible. For example TEX is finished.

vartec