21

I know one of the differences between Agile and Waterfall is to do with more customer and user feedback, but I'm trying to wrap my head around what makes the Agile/XP model more adaptable to change.

For example, say I'm developing a system that lets users write their own notes. It would involve designing, developing and testing the program before deploying it to production, which both models do (aside from the Agile model allowing you to do it with multiple iterations).

But, in the middle of development, someone changes their mind about what to add to the program (for example, add a feature that lets users add not only text, but also videos and images to their notes), then Agile would allow developers to go another cycle to implement that feature.

But Waterfall also lets you do the same thing (go back to the design and then write the code for it), except it claims to be "slower" and "more difficult to go back".

Am I missing something about both models?

10
  • 2
    The "Change of mind" happens as feedback when the end users see and use the program. With waterfall this happens far later in the process.
    – MTilsted
    Commented Jul 24 at 11:06
  • 4
    Agile is essentially a series of small waterfalls.
    – Ccm
    Commented Jul 25 at 12:10
  • 1
    I'm not saying that Agile isn't flexible (well, not right now, anyway), but you might want to keep in mind that a lot of the people selling all the "The key to being flexible by writing everything down on 50,000 notecards and having 15 minute meetings every 5 seconds" are the same people who are literally selling books and seminars on that topic. They might have some valid points, but a conflict of interest exists.
    – Ray
    Commented Jul 25 at 20:20
  • 1
    @SimonCrase I did. The quotation marks were just a convenient way to embed one independent clause inside another, not to indicate an actual quote.
    – Ray
    Commented Jul 28 at 23:50
  • 1
    @SimonCrase My most sincere apologies; I assumed the "50,000 cards" and "every 5 seconds" bits made it clear that that was intended to be a sarcastic summary of Agile's real recommendations (daily 15 min meetings and a mere ~100s of cards). The non-sarcastic point I was making was that a lot of the people selling those ideas are making money by selling Agile as a silver bullet, and that this conflict of interest, combined with the fact that Agile has no shortage of its own administrativia, suggests that OP's assumption that Agile is more flexible than "Waterfall" might be worth questioning
    – Ray
    Commented Jul 29 at 15:00

11 Answers 11

70

While it's been massively subverted over the years, the idea behind agile isn't that you deliver the same set of features faster. It's that you get things out to your users for feedback quicker and earlier, so you're more likely to be building the right thing.

4
  • 2
    Also, and emphasis on deliverables... processes should support the goal of shipping code to clients, rather than being an impediment to getting things done. That's very subjective, of course - what one person sees as an impediment, another sees as avoiding expensive mistakes - but it's a key theme of the Agile philosophy... Commented Jul 25 at 2:44
  • 5
    There is another dimension that I don't see mentioned so far: you can only spec and document what you know about. There are many domains where one starts out with imperfect knowledge about what is technically feasible. One solution can be to have some proof-of-concept investigations that allows fine-tuning of further specs and requirements and pure waterfall would have to make allowance for that.
    – JL Peyret
    Commented Jul 26 at 1:13
  • That's true. For example, In waterfall, you'd gather requirements, design the system, write user testing plan, make mockups, code the system, deploy it to production [A] (let's say we simplify a bit). With Agile, if you follow the theory, you'd gather requirements, make a prototype, have it tested by the user [A], make another prototype, have it tested by the user, etc. Now in both examples, [A] is where there's a requirement change. In waterfall this is at the end, so 6 months+. In Agile this occurs at the beginning, so 1 month down. Would you rather change course after 1 month or 6? Commented Jul 31 at 19:39
  • I'd add that, especially with stakeholders participating in the Sprint Demo (Whether internal or external clients, the people who are asking for the features themselves), you're focusing more on features that they currently know more about what they want, and are more fixed. (i.e. If you're building a shed, you can focus on the sturdiness of the walls, and the roof, and the doors, while your stakeholders are still deciding what colour to paint the shed - and they can still be deciding the paint colour while telling you "Yes, that's the sturdiness we want", or "It needs to be sturdier.".) Commented Aug 3 at 10:38
42

I think experts generally accept that "Waterfall" is a stereotype of certain ineffectual development practices.

From the 60s into the 90s, I dare say the vast majority of software developments - at least for business data processing - were not big-bang, one-shot projects conforming to "Waterfall", but incremental developments performed and readapted over many years by long-serving, permanent in-house staff. Let's call this "original agile", although I'm assigning the term retrospectively.

Amongst all the failures and uncertainties of this original-agile approach, and amongst an always-increasing software complexity, there was a growing tendency towards the stereotypical Waterfall practices.

The intention of Waterfall practices was to increase control and reduce risk, but in practice it failed to do those things. Instead its overheads just added to the cost, and its increased rigidities reduced the quality.

The intention of Waterfall was also for organisations to start treating software development like mechanised manufacturing, where the employer owns the machinery, the processes, the tools, and the know-how, and applies workers to perform the routine activities within an overall division of labour. This was as a fightback against the new kind of powerful craft workforce emerging in software development, just as the power of old craft workforces was being successfully destroyed by advancing mechanisation.

It's also worth noting that original-agile was completely inconsistent with the outsourcing and contracting business models that increased especially in the 90s, because with no limit on price nor with criteria for delivery, unscrupulous capitalist contractors would naturally just take the client for a ride and deliver nothing - or certainly charge twice as much as directly-employed labour would cost for the same delivery. So this was another reason to move towards Waterfall, because supposedly you could fix a price and hold a contractor legally liable for delivery to a spec.

The Agile Manifesto was a fightback against those currents. It reasserted a number of things, including the need for the skilled craft workforce over the use of drones following routine processes furnished by the organisation.

And it also invited contractor-clients to accept the reality of how development is done and always was done, and therefore accept the need to furnish money speculatively with no guarantee of quality or success. Control relies on reputations and a sense of professional purpose, and the power of the contractor-client to "sack" the contractor as the final disciplinary measure - which is much the kind of control employers have on directly-hired staff. I know this isn't how Agile contracting is generally sold, but is the reality of how it works in practice.

Meanwhile the so-called "Agile-Industrial Complex" nowadays is basically just another iteration of the forces behind Waterfall. Written documentation may be lighter, but the fundamental point of putting the workforce to work on routine tasks within a division of labour remains.

The equivalent of the old heavy documentation is now the heavy training and credentialism of "scrum masters" and non-technical "product owners" and various kinds of "daily ceremonies" and that sort of thing - the point is for the employer to own something, in this case an organisational structure and a set of routine practices (rather than the paperwork and routine practices of yesteryear's Waterfall), which supposedly allows it to hire drones and, if necessary, simply sack the incumbents and place new faces in all the same positions, and the work will carry on as before.

There is really only one way development is actually done, and ever has been done, and it is broadly consistent with "agile" on the supposed Agile-Waterfall axis. The essential meaning of what Agile is, is highly obfuscated by writings on the topic which come from the perspective of the Agile-Industrial Complex, but the crucial point is that basically development today, when done effectively, is being done on much the same terms as it was done in the 1960s.

1
  • 3
    I've studied MIS in 2012 in London, written a BSc thesis on Agile and this is the first time I've ever been actually interested and gotten a useful tidbit on Agile. Nice one. Commented Jul 26 at 9:13
30

But Waterfall also lets you do the same thing (go back to the design and then write the code for it)

Not really. Agile is a reaction to big project management. So the waterfall they are talking about "go back to design" means throwing away years of work and invested money. Essentially killing the project.

For example to get to the stage where you start programing, your notes app would have had to have gone through:

  • market research
  • feature design
  • architecture
  • cost analysis
  • breaking up into components
  • UML diagrams for each component
  • estimate and budget

and god knows how many more steps, all involving lots of meetings and sign offs at each stage and paying people money to complete that stage.

someone changes their mind about what to add to the program

Who? All the features have gone through all these stages with sign offs and committees at each one. You want to change a feature? have you done the market research? what about budget? it will need to goto the architects of course..

The point of the big waterfall process is to make sure you have dotted all the i's and crossed all the t's, you can't make impulsive changes and if you do its expensive.

Agile is saying "that doesn't work for software"

4
  • Agile requires that the stakeholder providing feedback already exists. If you're not developing software for a specific customer, then that role needs to be filled by the people who have done the market research. Also, Agile has a limit on total project size -- if you are building a massive behemoth of "enterprise" software consisting of individual modules working together, you are essentially doing Waterfall, because the only feedback you can get midway is whether your implementation still conforms to the interface. Commented Jul 24 at 12:10
  • i think maybe you are reading something in to my answer i didnt mean to convey
    – Ewan
    Commented Jul 24 at 18:45
  • 2
    My point is: Agile as a reaction to big project management also questions the environment in which the project is developed -- so you cannot substitute it without also making extensive changes in the organization around it. Commented Jul 25 at 5:49
  • while a lot has been written about scaling agile, I do think that the original expectation was to use it as a direct replacement in big projects. No one is doing waterfall for small projects
    – Ewan
    Commented Jul 25 at 17:12
14

I think it's important to understand that the idea of the waterfall process, as most people understand it, was an error. I don't know exactly what went wrong but if you read the original waterfall paper by Winston Royce, he describes the outline of the process which came to be known as waterfall. Right after that, there's this line:

I believe in this concept, but the implementation described above is risky and invites failure.

Emphasis is mine. Somehow, this key observation was lost, and several decades were spent 'inviting failure' before it was generally accepted that the approach wasn't working. And to be sure, failure showed up again and again. I really encourage everyone interested in software development processes to read the original 'waterfall' paper linked above. If you don't stop reading after the first page-and-a-half, you'll find that Royce advocates a process much more like Agile than the waterfall process (as it came to be understood.)

In a nutshell, I think the answer to the question you are asking is that, in 'classic' waterfall, you spent a lot of time getting all the requirements and design done before you start developing things. This is simply inefficient. That is, it takes a longer time to get the same result you get with 'agile' methods. Often there's not enough time for the process to actually produce a good (or even a working) result.

There are a couple of reasons for this. First off, what are the developers doing while the requirements and design are being completed? Hopefully you have some other work for them to do for those months. The second big issue is that the end product almost never looks like what was first envisioned. My experience is that you can't really get good requirements from people until they see the software and start telling you what is wrong about it. Often the requirements you get prior to that are fundamentally flawed. They might not be feasible, solve any real problem, or fail to consider many factors that are key to the success of the product. All that time spent writing down those wrong ideas and designing around them is simply wasted. You are far more likely to get a working result quickly if you start creating software that can be put in front of the people who will be using it sooner.

4
  • 1
    I hadn't heard of the Royce book. A must for those of us doubtful of Agile - or at least Agile as it's presented.
    – Trunk
    Commented Jul 24 at 10:29
  • 2
    @Trunk Agile is a pretty broad term. I think the general idea of iterating through the waterfall cycle as many times as you can (within reason) is solid and I think Royce would roughly agree.
    – JimmyJames
    Commented Jul 24 at 21:12
  • 2
    +100 My experience is that you can't really get good requirements from people until they see the software and start telling you what is wrong about it. Had that experience with a Client this week, had examined their old system and spent a couple of days with them gathering requirements but presenting a basic POC and suddenly they understood what was on offer and had lots of ideas and suggestions, some of which affect the data model. With Agile it's easy to incorporate that feedback into the next iteration.
    – deep64blue
    Commented Jul 26 at 15:07
  • 2
    @deep64blue Exactly. Back in the day, when no one questioned waterfall, I was on a team where we would spend months coming up with requirements and drawing UML diagrams etc. It would be about a year before we had a demo with our client who would inevitably be unhappy. Then we would start iterating out of necessity and finally get to something they would accept but was very overdue. Agile made perfect sense to me after having that experience multiple times.
    – JimmyJames
    Commented Jul 26 at 15:54
12

The difference is what "in the middle of development" means.

The Manifesto for Agile Software Development was a response to heavyweight, documentation-driven, command-and-control processes. These weren't necessarily "waterfall" processes - one example could be Barry Boehm's spiral model.

The fundamental problem that they saw was the inefficiencies of the documentation. Just because everyone agreed on the requirements specification, the architectural specification, and the design specification doesn't mean that they accurately reflected what the customer needs or wants. This holds true even if the customer is involved in creating and reviewing the documentation. The best way for the team to understand if what they are doing is correct is by having someone interact with the working software and give feedback.

By working in smaller increments and building smaller portions of the system, the team can get feedback earlier. Other practices associated with Agile methods also help the team focus on valuable work. These practices include executable specifications (and TDD, ATDD, and BDD), continuous documentation, just-in-time decision making (a practice from Lean), and favoring collaboration over gates and approvals.

For a team working in heavy, document-driven processes, a change made 4 or 5 weeks into the process to a requirement could impact a series of architectural, design, and implementation decisions. However, a team working in an Agile manner would have deferred more of those decisions and reduced the impact of the change.

Agile is not about speed. It looks like the team is working faster because they are delivering faster. Speed is also a byproduct of adopting to change and reducing the rework associated with changes.

3
  • In practical reality, do Agile intensive software houses nowadays see any sense in spending some time initially doing UI mockups so as to at least get a customer fixed on layouts and work-flows ?
    – Trunk
    Commented Jul 24 at 23:24
  • 4
    @Trunk, mockups and other forms of documentation are not bad practice for agile, nor are they universally good practice. It is situational. The point is to not do a bunch of it up front. Do enough to build something minimal to get it in front of your users sooner. If a mockup helps, create one. Commented Jul 25 at 0:19
  • 1
    @Trunk To concur with Greg, the essence of Agile is that the team should use the process, tools, and techniques that make the most sense. The process around designing an avionics system or medical device should be very different than one for building a website to share cat videos.
    – JimmyJames
    Commented Jul 26 at 16:00
10

This might be a subtle thing to point out, but I believe it lies at the heart of understanding the difference between agile and waterfall:

But, in the middle of development, someone changes their mind about what to add to the program (for example, add a feature that lets users add not only text, but also videos and images to their notes)

In agile, someone didn't change their mind. They just specifically hadn't made up their mind yet, because they hadn't yet gotten to the note-content-building stage.
They hadn't yet gone through the process of locking down the requirements, doing the technical analysis, and preparing to implement the note content certain way, before then "changing their mind". Even if they had an initial idea and now have a different idea, they don't need to redo a whole lot of documentation on the initial intentions, because they didn't lock the first idea down ahead of time.

They simply deferred the decision on what the note's content should be until the time when they actually needed to build it. The reason they deferred it is because their future selves would have more knowledge than their past selves (i.e. early user feedback based on an early release), and therefore their future selves would be more likely to make the right call.

But Waterfall also lets you do the same thing (go back to the design and then write the code for it)

Waterfall has you design the whole thing before you've written the code, let alone deployed it and asked for user feedback. In a waterfall process, someone would have definitely already locked in what content a note should contain, done the technical analysis, and prepared for the codebase to be built a certain way.

That's not to say that waterfall processes don't allow for building change-friendly codebases, but the end result here is that if you go back to the drawing board on what a note should contain, then you will have wasted effort on how you designed this the first time (which you're now overwriting with new requirements).

By not deferring the analyses (requirements and technical), you run the risk of prematurely locking something down and then needing to revisit it when you have future knowledge of things you weren't aware of at the original time.

then Agile would allow developers to go another cycle to implement that feature.

I just want to point out here that if an agile process had already delivered the first version of the note content, then the cost of going back and revisiting note content is the same regardless of whether you're working with agile or waterfall.

We can argue that agile generally puts more pressure on having a change-friendly codebase and whether or not that distinction matters for the above statement. For an identically written codebase regardless of using agile or waterfall, the above statement is correct.

The only time agile prevents you from wasting time and effort is when you end up changing your mind after the dev work has already started (and/or after a version was already released) and before you got to the part that you've now changed your mind on.

If it helps, you can define agile as a series of consecutive waterfall processes, but only if those waterfall processes do not attempt to guess at what future iterations will need to contain. The expectation of being able to predict the future is what sets waterfall apart from agile.

10
  • "That's not to say that waterfall processes don't allow for building change-friendly codebases, ...". This can turn into a trap: trying to predict which changes will happen in the future. I once was asked to troubleshoot a payroll application that encapsulated a equation parser, "just in case" someone wanted to implement a complicated formula. AFAIK the feature was never used, but it contributed to size and complexity. If they had merely focused on the functionality they needed, they'd have had a simpler system, and I might have missed out on some revenue. Commented Jul 24 at 8:33
  • " They just specifically hadn't made up their mind yet, because they hadn't yet gotten to the note-content-building stage." Yes. I wonder how much of the benefits of Agile come from not doing stuff that nobody will use. Commented Jul 24 at 8:35
  • @SimonCrase Change-friendliness is a general coding style. It does not require knowing/guessing which changes are going to happen. General adherence to things like SOLID, clean architecture guidelines, ... will lower the threshold on future changes, making it easier to shift direction in the future and not pre-emptively paint yourself into a corner.
    – Flater
    Commented Jul 24 at 22:33
  • " General adherence to things like SOLID, clean architecture guidelines, ... will lower the threshold on future changes" @Flater I've heard that line before, but seldom, if ever, seen it work. If the guy who designed the architecture has any sense, he's long gone before the brown smelly stuff hits the fan What does the acronym SOLID stand for, BTW? Commented Jul 25 at 2:06
  • 2
    @SimonCrase It appears you're not really grasping the distinction between change-friendliness and predicting the future. They have nothing to do with one another.
    – Flater
    Commented Jul 25 at 10:58
3

In addition, to what @Philip is saying:

Agile recommends rolling out one feature after another, all the way to users/consumers, whereas Waterfall recommends completing initial phases for all the features and then rolling that out for testing.

But, in the middle of development, someone changes their mind about what to add to the program (for example, add a feature that lets users add not only text, but also videos and images to their notes), then Agile would allow developers to go another cycle to implement that feature.

That "someone" is often an end user/consumer, so cycles happen faster with Agile because the consumers are involved more quickly as a matter of priority.

Agile makes the case that complete program design cannot always be known without end user/consumer input, so better to roll out feature by feature to the end user/consumers than to complete program design first.  (To the extreme, Agile might say that consumers don't really know what they want, so prototype something and let them try it out, rather than trying to tease all requirements out of them up front.)

But Waterfall also lets you do the same thing (go back to the design and then write the code for it), except it claims to be "slower" and "more difficult to go back".

Sure, it just recommends completing steps like "Program Design" for the whole project before moving to the next, like "Coding".  By its nature, this will put more complete software into end user/consumer's hands, yet later — whereas Agile recommends putting less complete software into end user/consumer's hands sooner.

There's also the nature that the initial stages of Waterfall don't have good or as formal support compared to the formality offered by programming languages.  Yes, there's tools to help with diagramming requirements, analysis, and design, but they are not as formal as programming languages with compilers.  (So, in the extreme, Agile recommends that design is captured in code rather than less formal design documents.)  (Compile-able & executable design documents would be a plus here.)

2

Fast Failure

Agile (at least the flavours that I know best, XP and Scrum) have the idea of failing fast. If you are doing the wrong thing, you should stop doing it as soon as possible. I was once brought in to close down a project with as little pain as possible. Management had identified a business problem, specified a solution, designed to the spec, implemented it, tested it, shown it to the users (sales team), who said that it sucked and refused to use it. The solution was wrong: instead of trying to make a bad manual process more efficient, they now decided to stop doing whatever it was they did. Agile would probably have failed too, but it would have failed earlier, cheaper, and without demoralizing the team.

Projects that suit waterfall

There are some projects that suit waterfall. If you are planning a space mission, and you can predict which celestial objects will be where at each future time, and you absolutely cannot fix things after launch, you had better write a spec. If you are doing a technology refresh on existing software, e.g. rewriting a legacy medical records system with new technology, waterfall is likely to help. If the FDA needs to approve your system, they will want to read doco, waterfall will help.

If you don't understand where you are going, be Agile

Imagine that you are building a completely novel application. Your users have never seen this type of application before, so they can't tell you what they want. Once they see it, though, they will think of new ways to use it, which never occurred to you. I have met developers who use waterfall as an excuse: sorry, that's not in the spec. The alternative is to get them working code, albeit incomplete (a former manager of mine used to talk of a "vertical slice" through the system), and let them figure out what a good system will do.

You might find it interesting to read about Bertha Benz's cross country automobile ride in 1888.

Although the ostensible purpose of the trip was to visit her mother, Bertha Benz had other motives – to prove to her husband, who had failed to adequately consider marketing his invention, that the automobile in which they both had heavily invested would become a financial success once it was shown to be useful to the general public; and to give her husband the confidence that his constructions had a future.

While she achieved this, her trip also revealed design flaws, which she was able to solve. Arguably she was the first motorist ("user"), so she tested the vehicle in ways that the designer hadn't envisaged.

13
  • 1
    you absolutely cannot fix things after launch — do not underestimate the creativity of scientists and engineers trying to rescue a space mission where a critical problem occurs ;)
    – gerrit
    Commented Jul 24 at 11:30
  • 2
    @Michael, even Nasa had its ground prototypes and testing runs, and world experts in prior designs of everything. Von Braun had already crashed a few rockets on the Nazi dime, before he got anywhere near Nasa's drawing boards. They didn't test everything for the first time up there. It's not fair to characterise space missions as waterfall without iterative design.
    – Steve
    Commented Jul 24 at 13:29
  • 2
    @Michael I'd be surprised if FDA doesn't still mandate a ton of specs and design doco. The way we handled this was to be agile during the first stages of a project: we'd identify the risks (not just hazards but also technology risks, unknowns in the user interface, etc), and build a few prototypes. As I said, fail fast and early. Then we'd write a bit of a spec for the alpha version for the product, build it, write a more detailed spec for betas, build them, refine the spec for production, etc. So agile leading into waterfall. Commented Jul 24 at 19:51
  • 1
    @SimonCrase its complicated. And depends on the risk level. For lower risk products, you can get away with post-implementaion spec modification on a per iteration basis like any other form of documentation in an agile manner. Commented Jul 24 at 20:31
  • 2
    @Haukinger Boeing? Commented Jul 26 at 18:39
0

When I first read the question title it seemed so simply I felt like voting to close it.

Sure, with waterfall design you can go back and change it. But it's so much extra work, so demoralizing taking apart code that's been tested extensively, so annoying that the client didn't say anything about a feature they just "took for granted", etc.

Every sphere of human activity has its humbug: the things people have in mind but don't speak explicitly on, preferring to go on and on about some other more presentable aspect - usually an aspect that requires acceptance of that aspect too shabby to speak openly about. Lab technicians in a university go on and on about "safety" when additional work is added to their labs. Teachers talk about "educational quality" - and often go on strike - when additional tests are introduced. Junior doctors in hospitals complain of the dangerous risks to "patient care" due to tiredness from their high working hours. We all know that the major component of the final alleviation to such complaints will be either less work or more money.

Software development is no different. "Flexibility" is not just a physical thing - being able to change a design easily. It is also a euphemism for not getting locked into a difficult or low-margin commercial relationship with a client. (An agreed set of deliverables can be justifiably linked to a corresponding set of stage payments - vital for cash flow.)

To some degree it's also a euphemism for people who like a more varied and exciting workplace with socio-professional relations in a way they find more agreeable - more group discussions, more creativity and, for some, more competitive drive with their co-workers so their abilities are noticed.

1
  • 1
    IMHO the focus on the customer in Agile is overrated. Agile has so many other benefits. Most of all by iterating quickly you find unknown unknowns early which you probably wouldn’t have found even if you had spent years of effort in a Waterfall planning stage.
    – Michael
    Commented Jul 24 at 13:09
0

[Day 1] Objective: From London, take us to Edinburgh.

Doing this the "Waterfall" way, you'd hop on the motorway and drive to Edinburgh.
You'd ignore the weather, turn off the SatNav, sit in endless traffic jams, not look for alternatives.
You'd just drive to Edinburgh.

Doing this the "Agile" way, you'd set off on a smaller road, and only plan as far as the next town. When you get there, you'd stop, review your progress, see what's working and what isn't and plan the next leg of the journey, to the next town. You'd "rinse and repeat" this at every town between start and finish of your journey.

Now, OK, that makes Agile sound really bad ... except that your journey might well finish up in Bristol, which where you actually need to be.
The original objective - Edinburgh - has been repeatedly re-evaluated along the way, found to be "lacking" in some way and decisions taken - collectively - that Bristol is the better place to go. So you wind up where you need to be, not where you was originally wanted to be.

1
  • 3
    I'll dispute your characterization of Waterfall "You'd ignore the weather, turn off the SatNav ...". Waterfall is not blindly striving for your objectives. Waterfall would do large amounts of planning by analyzing what are the potential routes to get to Edinburgh, what the weather and traffic is typically like for the time of travel, and understanding if you need special permits for your oversized vehicle (and applying for them well ahead of time). All of this done before even getting into your vehicle. Whether should you should end up in Bristol instead is something waterfall can't do.
    – Peter M
    Commented Jul 25 at 15:54
0

The basic concepts that make Agile more flexible, if done correctly, are these:

  • Thinking more in terms of MVPs (minimum viable products) for each feature. In practice, this goes hand-in-hand with the basic tenet that the individual stories should if at all possible be formulated in a minimum size. Or in other terms, any story, when finished, should be possible to be rolled out to production immediately. Optimally it should already increase the value of the product for the user; but as a baseline it at least needs to be possible to disable it with a feature toggle or something like that. But you never want long-term unmerged, molding, development code. I recall older projects where whole subsystems were developed as one piece over months or years, and then there was a big bang deployment (maybe after the original developers were gone...).
  • Stories are not fully refined long before they are ever worked on, but ideally relatively shortly before being put to active work. This is reflected in some story status schemes containing something like "backlog", "accepted for refinement", "accepted for implementation", "in implementation" etc. - i.e. the process of ideation, over (business) decision, over refinement, leading up to implementation, is part of the everyday process. In contrast, in the good old days of fully planned-out waterfall projects, the whole project was sometimes planned, in detail, long before the first line of code was written. This made it very hard to change things, or at least very costly (as the original cost was already sunk).
  • If doing sprint-based development, each sprint backlog should, when planned and commited to, be relatively static and unchanging, for the duration of the sprint. This is often misunderstood by stakeholders; they believe that Agile means they can switch stuff around daily. Nothing could be further from the truth. With agile processes, roles like a Scrum Master (or "Agile Master" if you want to avoid mentioning Scrum) were invented which take care of the process. In old projects, this was often the purview of the project lead, who often had very different priorities on top.
  • Another core tenet of Agile is that the developers themselves have a strong voice in the fine-planning of the stories, in committing to short-term timeframes (i.e., the sprint) and so on. In the distant past, waterfall projects were often pre-planned by a completely different team, which maybe didn't even have experience developing the actual software...
  • Also, especially if doing sprint-based cycles, the sprint change is always a good point in time to do reflection about what went well and what didn't. If you figure out that a story or feature just didn't work out, worst case you lose the time spent within that particular sprint. Yes, you can do the same in waterfall mode, but it's not something that comes natural.

No discussion about Agile should be without mentioning the Agile Manifesto. It contains little arguments for "why" it says what it says, and many of its topics are a bit more abstract, but much of it should be relatively self-explanatory.

Not the answer you're looking for? Browse other questions tagged or ask your own question.