The World’s Leading Microsoft .NET Magazine
   
 
realworldsa


Search this Blog

 








iPing-it!

---------------

---------------

Agile Development != Low Ceremony && The Movement Needs to Die

posted Tuesday, 25 September 2007
 

A search on Google for Agile Development returns  about 4,940,000 hits.  Everything is Agile now.  Businesses, project management styles, databases, legacy system interface development, architecture, enterprise architecture, enterprises, testing, executives, and the list goes on and on and on and on.  Yet  the same teams that stank at making software before they were agile, still stink at making software.  They just stink at it sooner in the process.

 

The teams of gurus that decided to put the Agile Manifesto in place, can make software just as well with a high ceremony RUP, or even the dreaded waterfall, as they can smashed into a room the size of a closet with whiteboard wallpaper doing it XP style.

 

XP was one of the silliest movements I have ever seen.  Hey, look at us, we can do software blind folded.  It's like Tiger Woods taking me on with only a 7 iron.  He will still kick my butt.  It seemed like a movement to make things challenging for the pros who got bored doing it the easy way.

 

I am not saying being agile is bad.  What is bad is the branding of agile as something that is new or different.  Some new techniques that are useful came out of the movement, but it is time for the movement to die.  Please die!!!!!!!

 

Just like you can't take the RUP and make a team of inexperience developers make good software, you can't take that team and expect them to make good software using XP.  Odds are that would just confuse everyone to the point that they don't know what is going on in the process as well as with the product they are trying to develop.

 

So I guess my point is, processes have not changed the end result of what makes good software development happen.  They have renamed things, moved them around, removed things, and added things, but in the end it is the team that knows what it is doing that gets the job done.  That includes knowing how to elicit requirements,  document the requirements in a traceable way, knowing the patterns that are common to the domain issues and are available in the given technology in order to put together a solid architecture, how to do unit testing or TDD the right way, how to have some sense of pride in developing bug free software, they know how to communicate, they look out for the customers best interest even when it will tick the customer off, they also know what the goal of the project is which enables them to set the proper level of ceremony , and most importantly they realize that nothing is invented, it is only discovered, especially on a software project. 

 

Of course the list is even greater than above, but the point is you either know how to do the tasks in the process right, or you don't.  Just doing them is not good enough.  So this agile attitude of "Since process activities don't work, let's get rid of them" does not do anything for the team that didn't know how to accomplish the tasks right in the first place.  It just displaces their lack of skills to different task.  I have seen tons overly bloated software out of agile teams because most teams use agile as an excuse to go right to code. 

 

I personally have found the 80/20 split works best for me when I have an experienced team of developers.  That is 80% planning, doing an architectural synthesis, and other prep work, and the 20% construction.  Most places you find it a 20/80(60+20) split.  20% planning and thinking, 60% coding, and 20% fixing the code because they didn't plan enough.  Teams now using agile methodologies wrong are doing 5% planning, 60% coding, and an additional 60% fixing.  Making the project end up with 120% coding time. 

 

They also end up with no roadmap to the code.  That roadmap being documentation.  Of course the teams that don't know what they were doing, ended up with bad roadmaps anyway, so who cares if you don't have one when you are done.

 

If you have been doing RUP, UP, or even PLE (Product Line Engineering) right, you have always been agile because you have taken the time to create an architecture that allows for it.  A lot of the companies I talk to today do not understand that an agile process is only as agile as your architecture allows it to be.  So you ask what are these teams doing that don't need to create an official architecture?  They are golfing with a 7 iron.  They are good enough and have gained enough experience to be able to build an architecture without the entire blue print.  That does not work for the average team.  They need the blue print.

 

What you will find is that the average developer can follow a well done blue print, but very few can read minds.  And no, talking about it in little groups with your thoughts on an index card and then all running  back to the same room where you can't think straight unless your head phones are good enough to drowned out the noise does not add value.

 

The blue print also adds value the modifiability of the project, meaning it can have a healthy maintenance phase.  A project without the proper blue print is a legacy application the day it is delivered.  I don't care if you have tests around the whole thing or not.

 

Processes are tailored for a project.  Always being low ceremony does not work.  Low ceremony does not have anything to do with being agile.  Agile is an enabled  state that is only accomplished through experience.  It can be learned, but absolutely not by doing less.

links: digg this    del.icio.us    technorati    reddit

AddThis Social Bookmark Button




1. Maxim Glaezer left...
Wednesday, 26 September 2007 1:19 am

Could not agree with you more. Being agile is a state of mind. It is a state of being ready. To some extent the process can help, it might change the mind and attitude slightly, but it will not get you more experience. And without experience, being "agile" is disastrous.


2. Steve Mitcham left...
Wednesday, 26 September 2007 4:26 pm :: http://geekswithblogs.net/smitcham

I completely agree with your statement that 'Agile' cannot make a bad team good by removing process. However, I disagree with your premise that Agile equates to a lack of process.

I am not currently operating in an Agile shop, although we aspire to get certain aspects of Agile development into our process. We are actually a CMMI Level 3 company and see no issues with incorporating Agile into process as we go along.

I think you are seeing the bandwagon and not digging deeper into the recommendations of the movement. For example, the pairing requirement intends for an experienced developer to be matched with an inexperienced one, bringing the less experienced person forward.

Also, nowhere do any of the Agile advocates that have more interesting posts than the surface hype suggest that Agile is a magic bullet. In fact, many indicate that the internal discipline needed for Agile development is much more difficult than the external disciple of something like RUP.


3. Tad Anderson left...
Wednesday, 26 September 2007 5:41 pm

Steve: I must have not communicated properly, or said something wrong, because the entire point was that Agile does not equate to a lack of process, except in those shops that take advantage of the Agile branding and use it wrongly to make it equate to lack of process. Thanks for your comments. There all good!!!


4. Marcello Braucci left...
Thursday, 27 September 2007 3:14 pm

I think that a methodology must be to a programmer like a low is for a phisicist: a way of modelling reality. As everyone who ever worked with a real project nowdays knows, one of the characteristic of developing, is to have customer requirements changed during the developing cycle. The waterfall based models simly doesn't take into account changing requirements, so someone thought something different was needed; something that was able to consider changing requirements as part of the process. That's why iterations was conceived in agile metodologies. The other main point is that integration tests are more important that unit tests, so the software must be tested end to and from the start of the project, and (again) that's why iterations are there.


5. pj left...
Wednesday, 17 October 2007 5:58 am

I agree with all of that, and more. At the outset, let me say that I'm inherently in favour of Agile practices and techniques; I've worked in both environments, on large projects and small, and I know which types of project worked for me, and worked in general. But, I've worked at either end of the spectrum of agile; a great team that managed to vastly exceed expectations, build great software and allowed me to learn a lot in the process. But equally I've worked on teams at 'the other end' who were - not necessarily poor developers - but who were not as engaged with their project as they might have been.

Maybe this is my point; the developers that produced good software where good guys, deeply interested in building a useable and well designed solution for the customer, and flexible in their attitude. The other teams not so; they were there to do a job... follow a process... take their pay... My impression that in that team was that the process the organisaton had sucked out the soul of the team, had worn the people down with endless meetings, stalling requirements phases, endless streams of documents... to a point where they just 'didn't care' any more about the project, and so didn't encourage the guys to give of their best.