Agile 101

ok, here it goes.  So everybody knows, Billhighway has been growing like gang-busters the past several years, and consistent with everything in technology the only contstant around here has been change!  We’ve undergone several large project initiatives, fluctuating team sizes, in-sourcing, out-sourcing, consultants, staff-adds, off-shore development, new technologies – you name it.  Lots of wonderful lessons learned right?  Right.  Now, as the smoke clears, we have a rare opportunity to reflect upon our development efforts in the past and actually take time to evaluate what has worked and what could use improvement.

We’re a technology company, thru-and-thru.  If our technology engine isnt “humming”  the whole company feels it.  Now, we’ve always prided ourselves on being innovative, pushing the boundries and embracing change, when and where it makes sense.  That said, it hasn’t always been easy.  Software development presents numerous challenges, non of which I intend to get into here, but instead, I would like to begin to showcase the direction I intend to begin taking our software development efforts, with the help of our new production manager, Doug. 

Doug and I  have begun an exploration into Agile, (he actually having previous exposure in a prior life, me living mostly thru success stories of other outfits) and, as most we’re moving forward with a hybrid-like adoption model, borrowing from the concepts which make the most sense for our environment.  Over the coming months I’ll shed some light into how things are going, hoping our efforts can help push the Agile community forward.

So what exactly is Agile? 

The need started long ago, as a number of methodologies formed to address the failures of Waterfall, which included analysis paralysis, long waits to get return on investment (one big release at the end of the project), projects that resisted change at all costs. They also addressed problems with the RUP methodology, which although iterative, was, at the time, heavy on documentation and process. The new methodologies shared a number of best practices, and the general movement became known as Agile.Some of the better known Agile methodologies are XP, Scrum, DSDM, AUP, ASD, and Crystal. Although each has its own spin, they agree on many points. The Agile movement was solidified when representatives from a number of Agile methodologies met in 2001 and produced the Agile Manifesto. The groups also agreed to the shared principles behind the manifesto.

One of the best aspects of Agile is that it is not a dogmatic approach, but rather a collection of best practices that should be used as they make sense for each project.   

Agile Best Practices

The best approach to implementation of a new methodology such as Agile is one best practice at a time, with 1-2 teams at a time. Get a win or two under your belt, and people start to see the light. Here are some of the best practices that are generally accepted by the various Agile methodologies, which I managed to scrap together.

  • Agile Project Planning – User story requirements gathering that avoids heavy documentation, plus prioritization, estimation and overall project planning.
  • Iterative development – Deliver value early and often. Includes iteration planning and an iteration review.
  • Daily team interaction – Enable daily face-to-face communication between developers and the business.
  • Daily stand-up meeting (“scrum”)– Short daily meeting to clear roadblocks and keep everyone on the same page.
  • Welcome changing requirements – Even late in development, changing requirements should be welcomed.
  • Sustainable development pace – A reasonable, sustainable work pace and avoid the death marches that lead to burnout and turnover.

There are some additional Agile practices that have less universal support but are nevertheless closely associated with Agile.

  • Test-driven development– Developers create their tests before development. Development is complete when they pass their tests.
  • Pair programming – Developers are paired for an iteration to work together.
  • Continous Integration –  the process of completely rebuilding and testing an application frequently

That should about cover the basics – stay tuned for more Agile know-how, from the trenches as we continue to dive-deeper in the weeks/months to come..

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s