My Photo

About Mike


Subscribe to Mike's Blog

Subscribe to Postings

To Receive a Daily Email of new Postings
Enter your email address:

Delivered by FeedBurner

Read My Posts via RSS feed
 


Join the Conversation
Subscribe to Comments

To Receive a Daily Email of Comments on Posts
Enter your email address:

Delivered by FeedBurner

Join the Conversation (Comments RSS Feed)
 AddThis Feed Button

Site Search





Creative Commons License 
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.


Recognition


My photos on
www.flickr.com
This is a Flickr badge showing public photos and videos from Mike Schaffner. Make your own badge here.


Powered by TypePad
Member since 10/2006

Rankings

  • Blogarama - The Blog Directory
  • Technology Blogs - Blog Top Sites
View blog authority

« Should We Make Customers Pay For The Convenience of Doing Business With Us Over The Internet? | Main | Hiring the Right / Wrong IT People to Achieve Alignment »

May 12, 2008

Agile Programming - A Poor Choice of Words?

_20070925_1320_acrobat_williewonk_2Agile Programming is a popular programming methodology.  But it's not alone. There are other methodologies such as the Rational Unified Process, Spiral, and the traditional Waterfall methodology in common use.  Each has it advantages and disadvantages and each is named in a way that describes the process.  However with Agile its very name can tend to cause confusion.  "Agile" gets confused with "agile".  Wait a minute.  Other than the capitalization aren't they the same things?  Well not exactly.  Agile with capitals does mean something different than lower case agile and that's where the confusion comes in.

Agile (upper-case) programming in overly simple terms is a method of developing programs using closely knit teams to quickly produce releasable code in short time frames.  Based on the Agile manifesto principles it has some certain processes.  Wikipedia provides a good overview and a simple Google search will provide a mass of references. 

agile (lower-case "a") programming simply denotes being flexible in our design and adjusting as we go.

The term Agile was no doubt derived from its lower-case counterparts and that's where the difficulty comes in.  When we speak of Agile others often hear agile.  And after all who wouldn't want some flexibility in programming?  So very often you quickly get buy-in to employ this methodology when you use this term.  That is until the realization sinks in that what your user thinks they bought is not what you thought you were selling. 

Another way to look at this is the debate of whether Agile/agile is a noun or an adjective.  Cory Foy's recent post presents a good discussion on this.  And while all of this discussion upper-case or lower-case, noun or adjective may seem like we are debating how many angels can dance on the head of a pin there is an important concept here.  That concept is about getting everyone involved to have the same understanding of how you are going to approach the programming on a project.

Agile (upper-case/noun) programming will call for closely knit teams of developers and users dedicated to the project, physically located together with an emphasis on face-to-face communications and delivering small releasable segments in a short time frame.  While this can be a very effective method it can also be a difficult one to get started. 

Agile can represent a significant change in the way we've always done programming both for our developers and our customers.  Presumably our developers are familiar with the term and understand its ramifications.  With our customers it may be a different story.  They may hear "agile" (lower-case/adjective) and assume it just means they'll have some flexibility in changing the design once it is completed.  Unless our customers understand this process, what it commits them to and are willing accept it our projects may be in trouble right from the start.

Because of this I believe that one of the keys to using Agile successfully is to provide adequate training for not just your developers but also you customers.  It also involves communicating the concepts to the customer managers not directly involved in the programming to properly set their expectations of what to they will get and what they must provide.

By the way, since we in IT sometimes get involved in Lean initiatives we should be aware that the same problem is there for Lean/lean.  Sometimes a very descriptive names has some unintended consequences that you must deal with.

How do you deal with the Agile/agile situation?  How have you communicated the concepts to your users?  Let's talk.

"20070925_1320 Acrobat" photo by williewonker

If this topic was of interest, you might also like these:

Tell a Friend       View blog reactions       

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/t/trackback/1102168/28976788

Listed below are links to weblogs that reference Agile Programming - A Poor Choice of Words?:

Comments

Hi Mike,

Thanks for the link (although my name is Cory Foy). You do make a good point that to really be effective as an organization, you have to involve not just your developers, but your PMs, BAs, and Customers.

Cory,

Thanks for commenting. First, let me apologize for getting your name wrong. I don't know what I was thinking or more correctly I apparently wasn't thinking. I've corrected the spelling. Thank you for pointing that out, I do want to get things right.

Agile can be an effective technique but you have to work at it.

Thanks,

Mike

Post a comment

If you have a TypeKey or TypePad account, please Sign In





Recommended Books



This is the personal blog of Michael W. Schaffner. The opinions expressed in this blog are soley mine and those of commenters. You should not infer that these opinions are the opinion of or have been endorsed by any current or former employer.
Copyright 2006, 2007, 2008 Michael W. Schaffner       You may copy or quote sections of this blog if you provide an attribution consisting of a reference to the Michael Schaffner and ''Beyond Blinking Lights and Acronyms" along with a hyperlink (if a web reference) to the blog posting.     
Creative Commons License 
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.