14

I recently had a conversation with a fellow developer about Agile Software Development. While I understand the principle, it seems that continuously changing requirements creates the potential for the project to go on forever. But, at least where I work, projects need to reach completion because it's a contract.

That is, the first iteration could take months, because for some projects the customer cannot use an incomplete application. For some projects, I think you need to define finished first, then you can break it into iterations and refine your definition after each iteration. But you must always have this definition.

If Agile Software Development embraces changing requirements how do you know where it ends? How can you budget for a project when the end result is always changing?

Is Agile Software Development more about an agile process, than an agile product?

Verax
  • 240
  • 1
  • 7
  • it ends when you need to actually deliver something that works, rather than tinker around. At that point you have to start imposing structure, planning, fix requirements and deadlines, and start working rather than fooling around. – jwenting Jul 14 '11 at 08:39
  • Each agile iteration results in a working, deliverable product which the client can use and learn more from. This goes on until they are satisfied, which often happens earlier than originally planned. This guarantees that the product is always working and takes into account the fact that software is never finished but rather evolves forever or dies. Just pick a point in time when you think the product is good enough and stop there (for now). – Martin Wickman Jul 14 '11 at 12:35
  • @Martin Wickman: I understand this, but "a deliverable product which the client can use" is the problem here. If this is the case, the first iteration could take months, because for some projects the customer cannot use an incomplete application. For some projects, I think you need to define finished first, then you can break it into iterations and refine your definition after each iteration. But you MUST ALWAYS have this definition. – Verax Jul 15 '11 at 02:31
  • @Verax: The agile manifesto was created to manage changes. If your project has has no changes, then agile is not for you. End of story. – Martin Wickman Jul 15 '11 at 07:48
  • @Martin Wickman: I don't believe you read my comment very well. It says "...refine your definition after each iteration.", so obviously I am aware that all projects have changes and I have identified a way to manage it. You could have helped by better defining "a deliverable product which the client can use". But instead you chose sarcasm. How unfortunate. – Verax Jul 15 '11 at 11:21
  • 2
    @Verax: You should clarify your question and add more context to it. Your comments shows there is more to the question. This is also obvious from the vote counts on the answer and that the accepted answer is unrelated to the actual question text (and even says "from the OPs comments..."). – Martin Wickman Jul 15 '11 at 12:00
  • Hi Verax, I've incorporated the feedback you've provided here and the interpretation by the accepted answer back into your question. If there's anything more you'd like to add, please edit your question. –  Jul 15 '11 at 19:39

7 Answers7

20

If you're focusing on doing (what you believe is) the most important stuff first, then the project will finish when:

  • You've spent the money you budgeted.
  • You've elapsed the time you budgeted.
  • You no longer want to add or change anything.
  • The next batch of your highest priority changes aren't worth what they will cost.
  • 5
  • No more money - Customer spent all their money on an incomplete useless product. 2. No more time - Customer still has an incomplete useless product. 3. Nothing to add - Yeah right! 4. Not worth it - Customer just gave up on the project. --- What am I missing? This doesn't make sense to me.
  • – Verax Jul 14 '11 at 05:08
  • 7
    For 1 and 2: If you do the most important stuff first, then when you run out of money, you'll have the most important stuff you can get for the money. Similar for time. I admit 3 is rare. For 4: Stopping doesn't necessarily mean the customer just gave up. It might mean that they have the most important stuff they wanted from this, and now would rather do other things with their money. How do you decide when to end other projects? Whatever criteria you use now are still available on agile projects. – Dale Emery Jul 14 '11 at 05:48
  • 1
    Dale, thank you for your thoughts. I think this only works if the customer is paying for each iteration individually and values each iteration as a product itself. I don't see how this could work well for fixed-cost products or products that require all or nothing. – Verax Jul 14 '11 at 07:04
  • 5
    @Verax: There's no such thing as a product that requires "all or nothing". There are always features that are merely "nice to have" and bugs that are cosmetic rather than functional. A fixed-cost project is a success if those are all that's left when money runs out. Agile methods try to maximize the likelihood of that. – Michael Borgwardt Jul 14 '11 at 07:42
  • @Michael: I challenge your statement that there is no such thing as all or nothing. I develop software for machine control. On my current project, if I delivered even one missing feature, the machine would not work completely and my customer could not sell it. That is what I mean by all or nothing. I could see how some projects could be partially completed and still be of value, but I think "all or nothing" does exist. Unless I missing something. – Verax Jul 14 '11 at 08:11
  • @Verax: Well, I know nothing about your specific requirements and my experience is in a completely different field (as is most programmers', which may explain why methods conceived to deal with mainstream application development seem unapplicable to you), I find it very hard to believe that there are no features without which the machine would still be usable and sellable. It implies that the proposed feature set is perfect and cannot possibly improved. – Michael Borgwardt Jul 14 '11 at 08:29
  • 1
    Of course there is a cost to changing the requirements. If you build something in one iteration, then change the requirements for that stuff in the next, there's a cost for that. Agile reduces the cost. It doesn't eliminate it. If you have a budget, you keep the budget in mind when deciding whether to add a new feature or change an existing one, knowing that you're always trading one off against the other. You learn to prioritize and re-prioritize, and you learn the consequences. – Dale Emery Jul 14 '11 at 08:52
  • This answer almost perfectly encapsulates the agile spirit. The fact that people used to waterfall have trouble accepting the underlying truth as such, is troubling in itself, but also points out why so many waterfall projects fail. – wolfgangsz Jul 14 '11 at 11:09
  • 1
    @wolfgangsz: So what evidence do you have that comparably more waterfall projects fail compared to agile projects? Just because you deliver something, even though it may suck, does not make an agile project a success. Also, the problem that many waterfall proponents have is that they don't realize that the type of products they work on have a history of being waterfallish out of necessity (ie. It has to have almost all the features). Whereas, the type of products utilizing agile have a history of little to no process at all (ie. business apps). The needs are very different. – Dunk Jul 14 '11 at 22:08