What Killed Waterfall Could Kill Agile
cleancoder.posterous.com
cleancoder.posterous.com
The accusation is, that the "scrum master/coach" role in agile has gone from being an in-team activity to being a project management activity. I do think that is true. I also agree that Agile has become a buzzword that companies are adopting without truly understanding it (in the vein of http://www.halfarsedagilemanifesto.org/ )
But the reason Agile won't be killed is the same reason Waterfall hasn't been killed: it's the optimal choice in some scenarios.
(And before you sneer at Waterfall, go build me a nuclear power station with Agile).
Or a sudoku solver.
Some use this to say TDD - which has ties to agile - doesn't work. But most people conclude that TDD isn't a silver bullet and you have to know about your problem domain before diving in.
Here's someone elses' blog post which includes links to both sets of posts: http://ravimohan.blogspot.com/2007/04/learning-from-sudoku-s...
Agile can't generate insight from nothing, it's not a silver bullet. But at least if you have some unit tests around your cool new code, you know that you won't accidentally break it later.
Wasn't the point of Royce's paper that waterfall wasn't even suited to avionics?
I also like to ask about the specific (and testable!) assertion Brooks made in his most famous essay.
Anyone who can answer those questions well demonstrates a working understanding of project management.
That would be interesting. Scrum says that your team should get themselves an appropriate set of tools and processes for the task at hand, and iterate, then inspect and adapt.
For a mission-critical lives-on-the-line software system, I'd imagine that there would be a lot of simulation and testing before the production release. Do you see a problem with that?
--
EDIT: full text posted here: https://gist.github.com/710960
Outside of a few websites, I don't think the full on TDD/Agile blitz has built much.
Stop using weasel words. Find real, confirmed examples or keep mum. "Likely" isn't worth a rebuttal.
Mozilla, Chrome browsers.
Android, iOS, and WinCE.
Word, Excel, Quicken, TurboTax, Photoshop, iLife.
Those were the first 2 that I googled. I'm sure that some of them are not agile, most likely by default - e.g. the older Microsoft ones, before MS or anyone else discovered agile. But honestly, all you are doing is throwing out names of popular programs without any idea if they are agile or not, and then claiming success on the ones that no-body refutes.
After that behaviour, the burden of proof is on you - back each one up with references or go away.
It would be interesting if you found major projects that evaluated both agile and waterfall and still chose waterfall or deliberately changed to a less agile process, instead of the other way. Rather than just software written before the people involved knew what agile was.
The only TDD tests I've seen in either project are related to the language specs -- and there the specs were written first.
Agile doesn't simply mean shorter release cycles, although in both articles that's how its used. Iterative waterfall methods result in shorter release cycles.
The key diffs to know the difference: 1) Do you get requirements up-front for a release cycle? The length of the cycle doesn't matter. Can be 1 week or 6 months. 2) Do you have specs for the major features? 3) Do you design up front or do you write tests first? 4) Do you have a big test pass before release?
These are the main diffs in the way waterfall and agile manifests.
Honestly, the only people I know who use Agile are hacks. Every time I've seen anyone try to demonstrate it, it is a disaster. IMO, its the most embarrassing movement in software engineering.
"requirements for a (short) release cycle" is a good description for a scrum sprint backlog. Scrum or agile does not say that you can't have "Specs, designs, and dot releases" in some form if you need them.
Confirm your examples. I want reports from developers saying, "We used waterfall to produce this software." You're the one making the claim, now produce some real evidence.
Once you prove your assertion, then I will present my evidence.
Yes, specifically because it was invented as a strawman to be knocked down. It was defined as a dead and useless development methodology.
No, please, be the bigger man and go first. heh.
Becoming a certified scrum master and rigidly following the rules of SCRUM seems counter to this. Isn't the first line of the manifesto "Individuals and interactions over processes and tools"
Having said this, I should add that I believe even agile teams require strong leaders with a clear vision for the product, I'm not a fan of democratic software development.
You're right about Spiral though... Spiral is iterative, so its much more compatible.
the only way that it can not have multiple passes is if the program is thrown away after V1.0. Any successfully program will be maintained and extended.
I disagree. to get a scrum project (or any project) going, you do need to have a vague idea of what you want (e.g. I want a website to sell my widgets online) and a few features for the next iteration (.e.g. List all the widgets. Take an order by email).
Scrum just says that you can inspect, adapt and iterate over that process.
meeting with the customer to figure out if they want an accounting system or a CMS
That's an exaggeration. You seen some vision of what broad need the software fills before you start, and an initial backlog of high-priority features to get you going.
1. observe/listen/read/question/collect-information
2. think (analyze, hypothesize, decide, etc.)
3. code (techically it is 'do', and the actual action varies by field, context and goal)
4. goto 1
How much refactoring do you do? How big a team does this approach scale to?
Business is a bunch of cheap pricks who don't understand the value of doing things right.