When Agile Projects Go Bad
blackbearnh writes "CIO Magazine has an article up looking at some of the ways that Agile projects can fail, or Agile can be misapplied in organizations. Some of the issues raised may not be new, but folks might want to pay special attention to these, since the people throwing the stones are two of the original Agile Manifesto signatories, Alistair Cockburn and Kent Brock. From the article: 'Once individuals become familiar with Agile, either through training or practice, they can become inflexible and intolerant of people new to the process. Cockburn has seen this in action. "I'm one of the authors of the manifesto, so if I say something 'weird,' they can't tell me I don't understand Agile. But if someone else — and it doesn't matter how many years of experience they have — says something funny, they get told they don't understand Agile."'" Here's another recent article by the same author on the perils now besetting Agile.
Several of the more business-oriented programming/software development courses on my (Swedish) campus is being taught in project groups using agile.
You mean when a good idea is elevated to an inflexible ideology, it can become a bad idea? This has never, ever happened before. :)
Bad management leads to bad results, no matter the methodology.
We've had quite a few people around my workplace promoting extreme programming and (fr)agile software development. It's not going to replace lack of talent, lack of planning, or not knowing what the true costs of things are. I think many people in management have taken in only the parts that they want to hear, and ignored the rest. The results of this kind of misapplication are fairly obvious.
My biggest objection is the lack of credible proof that it actually works any better than the tried an true software methodologies.
Alistair who ??
Hello, McFly! It's Kent Beck, not Brock.
Dr Superlove 300ml. I use my powers for awesome
That should be "Kent Beck" in the summary, not "Brock".
New mod option wanted: -1 DrunkenRambling
I constantly see so many adhoc dev teams operate with almost no formal processes and I would be very interested to see a basic list of steps that you perform to manage your project from the start to production deployment.
At the moment the most common methods for small teams seems to be the following
- Customer asks for a change to some software, website etc
- Programmer may do basic class designs
- Progrmmer codes the changes
- Pushed into staging envrionment
- Customer gives ok
- Pushed into production
I would be very keen to hear from people who have very clean, clear well defined processes to list the steps from requirements gathering right through to production deployment.
s/Agile/Linux/g
(AC because this will be modded troll/flame bait, when really if the same story were about Linux it would easily be decried flame bait and bashed)
It's intellectually lazy, without proof that XP techniques are more effective than other systems development methods. They rely on repeated assertion and abuse of people who dare to ask them to prove their case.
This book gives a good overview of the case against XP.
http://www.amazon.com/Extreme-Programming-Refactored-Case-Against/dp/1590590961/ref=sr_1_1?ie=UTF8&s=books&qid=1227079014&sr=8-1
Some of my favourite XP cultist quotes :
"Unacknowledged fear is the source of all software project failures"
"Extreme programmers are not afraid of oral documentation"
"Dependencies between requirements are more a matter of fear than reality"
"I think maybe concentration is the enemy"
Cockburn has seen this in action.
I have personally experienced cockburn and assure you will become "become inflexible and intolerant".
Trying to install linux on my microwave, but keep getting a kernel panic...
Gimme a break. 'Agile Programming' is just an appallingly pretentious buzzword describing a myopic development process which misappropriates components built by other people to a task they were never intended to solve. I.e., a circle jerk running down a blind alley, smearing lipstick on a colossal pig with terminal cancer.
I know, flamebait. Flame away!
In my thirty years of design and programming on projects big and small, high level to low, I've seen this crap come and go. It's always more or less the same, and it's always instigated/pushed/proposed by those who cannot code, or those who are looking for something to do besides code.
Cockburn has seen this in action.
Did anyone else giggle like an 8th grader when they read this?
James Turner and James Shore are two very different authors.
how to invest, a novice's guide
Here's the article without most of the ads and in a much nicer way to read it..
http://www.cio.com/article/print/464169
-Deepone
There isn't one of them that doesn't have individuals that follow the processes blindly.
I think this is the point of TFA, you need to think about what you are doing and never assume that you have a silver bullet.
This is actually where XP/Agile have a major advantage over other more formal processes - the Agile processes try not to promote rigid thinking and if applied correctly should be self-correcting or applied in more than just name only (but you would know that if you had read TFA).
Genesis 1:32 And God typed
XP is probably the most prescriptive of all methodologies I can recall.
If you aren't following all 12 practices, you're not doing XP. It's ironic that the people that want to shy away from CMMI's use of the term 'discipline', requires more of it than any other. Even RUP is more flexible (albeit bloated on an altogether different scale). CMMI is a model, not a standard, but with XP - it's all 'do it our way or you're not doing agile'. If you dear criticize some practices, there's a chorus of fanboys crying 'Blasphemy!'
Personally, I prefer Scrum and Lean development - they really tickle my senses.
Having worked on a Scrum-managed development project for 3 years in a large French/Canadian software house, I am happy to have the opportunity to get it off my chest that Scrum SUCKS the big one!!! and Scrum slowly strangled a decent project over 3 years until death. Finally our company was bought out, and the project was consigned to the trashcan by accountants due to faiure to show any results after such massive investment. Due to the fact that it was a project for a new product, using new development technologies, and with a new team, we were all initially on the learning curve. As required we had to give estimates on how long our tasks would take, blindly. Of course we got it wrong and soon had a massive backlog, and finally we became slaves of this massive backlog. We had many overlapping scrum groups based on vertical and transitional concerns, resulting in seemingly non-stop scrum meetings and backlog meetings. Scrum masters were incapable of passing useful information and alrets between scrum groups, because they had little technical savvy. End result: people just lying about the completion level of their tasks, backlog explosion, lack of coordination, demos not working, a massive drop in morale, massive infighting and politics and blame game, massive quality problems - components not working meant testing was limited, etc. In that 3 years over 50% of the original development team just left the company and so we were slowly sinking into the mud of failure. It was micromanagement gone mad.
But these scrum idiots just kept flogging that dead horse with religious zeal and in the end they blamed everything but themselves. Perhaps the fact that the company spent so much money on having these people trained, they could not admit defeat and stop the madness.
Meh, it's Clark Kent, you insensitive clod!
Measuring productivity is easy:
Just give the same projects to 2 teams,
with randomly given different methodologies,
and then see how often and how fast they succeed.
One can then use the usual statistical tools to analyze these results.
Of course this costs a lot.
But not knowing also costs a lot.
Kim0
Just reading your post shows me that you guys where using scrum the wrong way. Most people don't understand the true purpose of Scrum. We do Scrums every day at 11:30 and they take about a minute ot two per team-member (just did todays and I'm checking on slashdot while adding my new tickets to mantis).
Scrums are stand-up meetings. Everybody stands and keeps his turn short. You say what you where doing since yesterday, what you achieved and what you are going to do today. It's mostly about self-awareness and being able to judge your capacities - it's a mental exercise, not a classic meeting (we have those too, but only like once every 8 weeks).
Agile came out of the need to deal with controll-freaks who didn't do their homework and tend to weigh down things that should be lighweight with to much bureaucracy. Where human interfacing is a key point of your software, Agile is a very good method to handle things. If the pipeline has skilled people at each section, that is. Our company is technology driven with managers that actually wrote code at some point in their career. I'd call our process somewhat agile - we get changes every odd week - and everybody deals with it without a single hitch. ... Coming to think of it, maybe that's why we dominate our market.
Bottom line:
You guys got Scrum and Agile all wrong. Maybe you should've steared clear from the get go.
We suffer more in our imagination than in reality. - Seneca
Yes, but here it's funnier, since you were supposed to trust it without any proof, and in fact in spite of proof to the contrary, from the start.
Since the topic is agile projects gone bad, you only need to look at the original Chrysler C3 project that became the poster child for XP: from Chrysler's point of view, the project was an abject failure. By the time it was _years_ overdue, it still hadn't delivered a tenth of the promises. At least one of the managers involved as client-representative in that project got stress-related health problems during it. Chrysler not only cancelled the project, but forbade XP. It's something you'd normally call "EPIC FAIL!" as projects go.
But in true CCCP fashion, a failure got redefined into a smashing success, and presented as such in the books. In fact, turned into the poster child for successful XP.
So there we have our answer already: when XP projects go bad, failure gets redefined as a smashing success.
Later studies into, well, how much better _is_ pair programming, actually showed that such a pair is somewhat better than a single programmer for inexperienced freshman year programmers, but barely marginally better than a single programmer when done with experienced programmers. Both cases delivered actually less than the two programmers working separately on different parts of the problem.
Again, it won't stop anyone from still pretending that it's the opposite.
XP also redefined what "bug" is, by pretending that only stuff caught by the client's automated tests are bugs. Hence, if your tests for my "int add(int x, int y)" method only test for x = 2 and y = 3, and the whole method is just a "return 5;", it's not buggy. If you wan it changed, that's a change request, mate.
Hence making possible the claim that XP delivers 100% bug-free code. Now, if you want to redefine what "bug" means, you could do the same for any other methodology, but XP zealots like to ignore that. (I mean, seriously, if "not caught by the acceptance tests" doesn't mean "bug", then Windows 3.0 was 100% bug free too. Dumbly enough it was only tested internally on identical Compaq computers, but it ran flawlessly on those and with the particular software mix used in the test. If it doesn't work on your computer, though, XP would call it a change request.)
So, heh, it's mildly funny to hear the same guys who did that reality redefinition complain about others doing the same.
Seriously, it reminds me of a joke by Vince Ebert, translated loosely from memory: If you think there's a beer in the fridge and go look, that's science. If you think there's a beer in the fridge but don't look, that's religion. And if you look, see there's no beer, and still think there's a beer in the fridge, that's esotheric.
That's what XP is: something that started as a religion, and ended up an esotheric cult.
I'll be the first to say that flexible thinking is great, and that XP even has some good ideas. The point where it fails is that "turning all the knobs to 10", to quote the authors.
Essentially what they do is discovering something like "hey, some salt in a soup tastes nice, and a bit of vinegar makes it even better"... and from there formalizing an ideology in which all soup is done only with salt and vinegar. In fact, by boiling a kilo of salt in 5 litres of vinegar, since that's the turning all knobs to the max point.
A polar bear is a cartesian bear after a coordinate transform.
I'm reading lot's of ragging on Agile here. Maybe you guys should actually f*cking read the agile manifesto. It's only a few sentences after all. You'll notice that it's actually quite a good thing that tries to rid the software devprocess of bloat and get close to the people for whom software is written.
Whenever I've used agile with the right people, it was a breeze getting the job done. It's basically common-sence systematically applied to software developement in my book.
We suffer more in our imagination than in reality. - Seneca
The typo was in the article before it got updated.
True confidence comes not from realising you are as good as your peers, but that your peers are as bad as you are.
I'm sorry, but I got as far as "Alistair Cockburn and Kent Brock" and had to stop.
If it works, it's agile. If it doesn't, it's not. That's the problem most try-to-be-agile practitioners have with the method: It doesn't work a lot of the time, but people are happy to tell you you're doing it wrong instead of acknowledging the brittleness of the process.
Agile works fine for us. Maybe we don't do it by some 'book', and I have no use for consultants, but what we do WORKS.
And I disagree that you have to have some exact certain people to implement it. Not that you can just take some random collection of developers and send them off to do agile development, but with one or two key people that can actually communicate and teach people how to do what needs to be done it works fine.
I've taken groups of nothing but myself and interns and done it, people with no industry experience at all. If you explain things to them and forget about being all up tight about exactly how things are structured you can build an agile work process that WORKS every time.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
And the article is not by Jim Shore, who wrote the linked article at the bottom of the summary. TYPO TYPO TYPO
Random Musings
http://accidentaltechnologist.com/general/dilbert-goes-agile/
Comment removed based on user account deletion
As someone who had the "fun" of becoming a scrum master at a company that was trying (and eventually failed) move off of waterfall I got to be the main Agile advocate with our management.
This company failed from both ends. Developers began to use Agile as a shell to protect them from the problems that were in the old system. That's understandable given how badly they were overworked during deadlines. However what they didn't see was how this poisoned upper management to the entire concept. Management was willing to give a little to get a LOT (they wanted projects to miraculously start to "just work" as one put it) but wanted to have the process be open. Development wanted ANYTHING to shelter them from the hell they had been going through.
Both parties were going into Agile for the wrong reasons. They both thought they were the right reasons.
By the time I got fed up and left we had everyone calling our process "Agile" because we did scrum meetings, but all the processes behind the scenes had reverted back to waterfall at the core. And when I would tell management -or- development that they were doing things for the wrong reason. I tried to avoid saying "you don't understand Agile" so that I wouldn't get defense mechanisms raised and funny part was the more I avoided using that phrase the more they would toss it back in my face (both sides). We had multiple meetings, even bringing in outside consultants, and the meetings always ended with them agreeing to the points brought up but then a week or a month later caving back to their old ways (this was a shop that was VERY entrenched in old ways, having done web services for financial companies for well over a decade).
The point here being ... it isn't always just management that doesn't "get" Agile. Sometimes the devs don't "get" it either (and very often the middle group of PMs has plenty of "wtf" left as well). Agile isn't a defense mechanism that allows you to block people from giving you work or to let you work on only the things you find interesting. And if -neither- side wants to be Agile for the right reasons it will fail hard and fast.
PS. Me? I went back to being a Sales Engineer / Field PM for companies in other timezones ... however the company I went to DOES do Agile and does it WELL. My scrum master time left me with a bad taste for ever doing it again and I will -never- try to lead a transition to Agile, but it was nice to see my opinions on processes and reasons work. I had convinced myself when I left the scrum master gig that -I- didn't "get" Agile ... but I did ... the company just did not -want- the changes required. Only the benefits.
It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
XP, Scrum, etc. have some good ideas--however, as TFA mentions, they require *thought* to implement well. They are also not new, just re-packaged. Ed Yourdon was talking about interviewing users to find out how the system/process *really* works over 20 years ago. (His "Structured Analysis" is an excellent on-line book for learning how to design systems)
However, any method that relies on your team members being in the top 10%/experienced programmers is only going to be useful for a few, high-profile or specialized projects where you can actually hire or have available those top, experienced programmers. What the world really needs is an "Army method": something that gets useful, productive work out of any coder who isn't literally retarded. You won't get that with any method that leaves the design specs between the lead programmer's ears; the average person needs a road map and instructions. However, with sufficiently detailed, simple step-by-step instructions, a hick fresh out of high school can maintain a tank. The same thing is true of the "average" coder: with adequate design specs, any idiot who knows how to code can be productive.
The trick is coming up with those design specs, just like the brilliance of Army training is in designing the courses and instructions that enable any idiot to repair a tank.
---dragoness
It needs Kent Brockman's two cents.
Waterfall, agile, who cares?
Any process which gets the job done so the software runs well and the defects which impact the end user experience are minimized is a good process. Sometimes that process is highly formalized, sometimes not. Sometimes the process is something which an organization simply made up from common sense and experience. It doesn't matter.
Programmers shouldn't have to worry about special keywords ... let the compilers worry about that stuff. :-)
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
Agile does reduce some of the work on the developer staff, but we tried it here and it INCREASES the workload on the support staff by just about TRIPLING the workload. We threw it out.
The number one strategy for a successful project is to admit once and for all, any time estimate that happens in the first few weeks is a pure unadulterated lie. You don't know how long it takes until you know exactly what it is you're doing. In turn, you can't do that before you have the FULL specs. AFTER you have the specs AND have designed the system, then you know how long it should take.
Hint, well done software development will devote 50-90 percent of the total time to design. Translation: Time estimates are wild guesses until the project is 50-90 percent complete. If management takes the initial estimate and casts it in concrete, the project will fail.
Hint 2, those specs you got when beginning the project? Those aren't the full specs. There'll be many 'clarifications' necessary as design begins. You will know how many such clarifications are required once you have them all and not before.
Second, the first one is scratch. Inevitably once some early coding happens based on the preliminary design, tough corner cases WILL be discovered. These will require anything from a serious change to fundamental elements to a complete redesign. Any time estimates based on that design? Out the window!
Third, a good way to find the scratch early and to discover that the specs are NOT what you thought they were IS an iterative process. That won't magically make that wild guess in week one come true, but probably will make the process take less time than it would have otherwise.
Agile gets some of that right, but unfortunately wraps it all up in buzzwords worthy of a crazy cult (hint, cults love to invent new words that mean the same thing as old words AND to overload old words with new meaning. Unlike simple slang, they tend to rigorously define the buzzwords), and encourages turning 'the process' into a religion. Of course, many managers seem to turn every trivial policy into religious doctrine anyway.
http://stochasticresonance.wordpress.com/2008/04/06/dropping-hits-of-agile/
Don't worry, it will be fixed in TFA version 2.0.
Table-ized A.I.
Once that's done, the other poor programmers writing the app will have a harder time diverting blame for their poor code. Then:
In the latter case, the test suite provides customer support with a convenient list of known, on-the-spot reproducible (by running the test suite against the released software) bugs, which they can convey to their customers from day one of the release so the customers can:
This way everybody, er, 'wins'. Your point was also reflected in 'Good To Great' (I think) when mentioning Toyota -- they 'get great results by having average people follow above-average processes'.
I guess it's not so agile after all: apt or ready to move