Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Tuesday, September 25, 2007

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

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.

posted by tadanderson at 6:39 PM 1 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger