The Agile missing point and the Waterfall Illusion.
November 25th, 2009
The Agile missing point and the Waterfall Illusion.
Published on November 25th, 2009 @ 09:43:26 pm , using 1324 words, 21239 views
Now, Agile. In the Agile Manifesto the idea was to value common sense upon theory. That is why “individuals and interactions were valued over processes and tools, working software over comprehensive documentation, Customer collaboration over contract negotiation and Responding to change over following a plan.”. Nowhere on those lines there is a mention of chaos process over phased process. Where is the missing point? Well, actually in three places.
1. Comprehensive documentation was assumed to be the design’s product. So, design must go, correct? Well, that is not true. The idea behind this is to prefer creating working software rather that documenting. Actually, creating working software requires you to think first on what do I need to create software for, how can I accomplish that, think how will I do it, do it and then check if it works. You can do all that without opening a word processor, right? Working software is not any software, but the software that delivers the business value, and that is not produced just by hitting keys.
2. Customer collaboration over contract negotiation seems to define the negotiation to be a non collaborative task. Actually, any customer involvement implies a contract (or mini contracts), which is the definition of what to do, and who will do what. Collaboration does not mean the client will bring coffee, or will help writing the code. It means active communication to shape the bush with little cuts. The client says the overall figure, then supports indicating the little branches you may cut further. Contract and mini-contracts.
3. Responding to change over following a plan does not mean going into chaos. The following a plan refers to follow a line without looking at changes in time. That is flawed thinking, the plan may perfectly be to respond to change in an organized way, validating each time to improve the next one. The plan is simple: we decide as we go, following these principles.
All the above is in the principles.
“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
“Continuous attention to technical excellence and good design enhances agility.”
“Business people and developers must work together daily throughout the project”
And
“At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”
Trackback address for this post
8 comments
I agree with you people were doing Agile long before the term got coined... I found this sentence disturbing tough:
"so coders wont need to worry about those things....."
The paper by Hirotaka Takeuchi and Ikujiro Nonaka that led to Scrum talks about an holistic approach to product development where all the phases overlap. Everything happens at once, by everyone working closely together, all at the same time, just like how a rugby team passes the ball to each other in a Scrum (well a Maul to be accurate :)).
So no phases, no hand-offs. Everyone worries about everything, there are experts yes, but everyone works together:
http://apln-richmond.pbworks.com/f/New%20New%20Prod%20Devel%20Game.pdf
This is the essence of Agility and is what separates it from other ideas like Lean (yes Lean and Agile are not the same thing).
People like David Snowden talk about the science behind this idea which stems from chaos theory and complex adaptive systems theory. The most applicable theoretical basis for Agility today is social complexity theory.
So Agile is much understood, just like most things that are given a label, marketed and sold to death :)
Paul.
"No, agile does not mean following a methodology and getting rid of good guys like Architects and PMs,"
Agile does mean reducing hand-offs. It also means self-organised cross functional teams.
So whilst specialists are acceptable, they can result in hand-offs, and impede self organisation. So an architect that hands-off to a development team is not Agile, and a PM that thinks it is his job to organise the team is not Agile.
Many Agile teams have found that the best way to reduce hand-offs and to promote self organisation is to have multi-skilled team members. So Agile team members tend to be more then mere "coders". They would describe themselves as "developers", and good developers can architect and project manage for themselves, without having to rely on specialists.
I'm not saying that specialist are a good thing or a bad thing, but I believe it is a false statement to say the Agility doesn't favour cross-functional teams.
Paul.
Hello Paul!
Ok, let's clarify the sentences. The idea is that architects and project managers are not people you need to get rid off simply because you only need coders in agile. Note that is different of what you understood. As Hirokata and Ikujiro said, you need all that, just that at the same time. There is no problem if an architect codes and also keeps an eye on the higher view of the system. There is no problem if the project manager codes and also keeps numbers and takes care of resource problems. There IS a problem is no one does that, see the difference?
Now, still doesn't make sense to have all people knowing a little of some specialty, against having someone expert on that in the team, sharing his knowledge. Working all together shouldn't mean everybody doing the same thing at the same time. Self organizing teams are not the ones that synchronize to do the same thing at a particular moment. Architects play a role, as project management. PM role is not to dictate the lines of code to be written, that is a fallacy, PM is there for a needed task of control (which is not a bad word).
Take this two examples:
a. A team where all are the same age, same experience. All know how to code in java, and all have taken the Software Architecture fundamentals, had read the testing book, and already read the PMBOOk. Great, they all work doing the same, trying to code, control and work from top and down to code.
b. A team where you have a set of java experts, a testing expert, an architect and a project manager. Everyone works at the same time, providing their knowledge to the development.
I do believe both can be agile, if well organized. I do believe both may fail being agile if not organized correctly.
Also, of course, I do think there are phases. Even micro ones. There may be coders that open their minds and start coding without even thinking on what is needed, and produce something useful. But most of them will actually ask what is needed, then think how to do it, then do it and finally test it (testing may me moved upwards like in TDD, still it is a phase). So, the idea is not to remove phases, it is to keep away the focus on them and put it on the actually delivered business value.
Finally, just to mention it again, I feel following, say, SCRUM, does not make you Agile automagically. SCRUM is a way, not the only one, not the surefire one.
Cheers.
Thanks for clarifying. When I develop I move from anyalsis to specification, to design to coding to re-design (refactor), back to analysis all within minutes, and I continue like this in small cycles. So I guess if you count a few seconds as a phase then there are always phases :) I find it more descriptive however to say that "phases happen all at once".
As for specialists, I agree that they can be useful. Personally I find a good spread of technology expertise useful (web design, database design, networking etc) rather then trying to split the development role (analysis, architecture/design, leadership/management, communication, coding etc).
I see all these things as part and parcel of development, and I believe good developers should be able to do all these things. I tend to try and keep to a ratio of "journeymen" developers to "apprentices" of 1 : 3. And of course you need a Lead developer of some sort to have the final say when the team can't reach consensus.
Of course this is just opinion, and I agree that there is no fixed formula to Agility. And yes, it definitely doesn't mean following a prescribed methodology like Scrum :)
Paul.
Sorry. I said a ratio of journeymen developers to apprentices of 1:3. I should have said 1:1. And of course ideally all developers would be master crafstmen :)
Your post has got me thinking about what makes a team Agile, and on reflection I believe it comes simply down to skill. Highly skilled developers who can run with a concept, collaborate with customers and do what it takes to deliver quickly and often, whilst producing a codebase which is a clean, pleasant and sustainable place in which to work.
I think that's it. Kent Beck, Ron Jefferies and Ward Cunningham all qualify here as Agile developers, and the original chrysler C3 project team would be my example of an archetypal 'Agile" team.
Agility to me is recognising the importance of internal safeguards and risk mitigation strategies. Developers that know what they are doing and can travel light and be responsive to change. A recent blog post made the analogy with skiing:
http://availagility.co.uk/2010/01/08/process-safeguards-and-ski-slopes/
Agile developers are the skiers that are competent on the black slopes. Sure black runs are harder, but if you know what you are doing you'll get down the mountain a hell of a lot quicker :)
An environment where there are a lot of external safety factors, like architects, project managers etc assume that the developers need safeguards. This is akin to the green slopes. Wide pistes, gentle slopes, etc.
So to me Agility is an attitude and the ability to back it up. One without the other doesn't work. As Kent Beck put it "turning the volume up to 11".
BTW, Agile as I describe it here is not for everyone :) As in skiing, some teams are better off sticking to the red, blue and green slopes, and other teams shouldn't be on the mountain at all :)
Paul.
I do agree with you. Agile is not about extreme performance, where you need all geniuses locked up in a small room. Agile is about being able to deliver even in not as safe environments, with juniors, changing requirements, changing resources and even unknown outcomes.
So, as my example mentions, if you cannot gather a knowing all, doing all group of people, doesn't mean you cannot be agile. You can actually demonstrate how agile you are if you can get the team going and wining the game with only moving backwards pawns.
Cheers!
Hi William,
I disagree. Most teams are woefully under-skilled in my opinion. Why? Because over the years management have chosen to under value "coders". You get what you value. We seem to value tools over developers, experts over developers. All on the assumption that a army of cheap coders, led by one or two experts and utilizing the best tools makes the most economic sense. Agile presents another alternative. Save the money on the experts and tools, and hire a few good developers (5-7), and they will deliver as much if not more in less time. At the end of the day Agile is not a prescriptive set of practices, it is a movement.
I see your belief in architecture as a movement "The architect Movement". What I am describing is the original "Agile Movement", which started in around 1999 with XP. Since then Agile as been marketed as "good" and "best practice", I disagree with all this. Agile is one approach amongst many. I've come across very good waterfall teams in my time, and I've seen very bad Agile teams :) IMO the Agile movement is more or less dead anyway, killed off by salesmen and consultants. The original goals have now mostly moved to the "Craftsmanship Movement" and of course there is the 'Artisanal - Retro Futurism..." Movement of Brian Marick
I see your description of Agile as a watering down of the original goals, what I describe as "Me too Agile". I guess this is inevitable as Agile goes main stream :) I just wanted to point out what Agile was originally all about, and still is for those who are still pushing people over tools. We still have a long way to go, and as Brian points out in many ways we have gone backwards... Paul.
This post has 1 feedback awaiting moderation...


