Thursday, October 05, 2006

The first Agile post

A little background: "Working in an Agile environment" either means something to you, or it doesn't. A little over a year ago, it meant nothing to me (you might as well have said "Working in a Nimble environment"). For many of my friends who work in software circles at other companies in the city, it still means nothing. If you're one of those for whom it means nothing, this post's probably not going to make a whole lot of sense to you (assuming anyone actually read it, that is). There are lots of places on the Web for you to find out more (google "Agile" or "Agile manifesto" for a good starting point) but I'm going to assume anyone reading this knows the context well enough to grok my meaning.

So how hard is it to introduce a company-wide cultural change? I'm finding it's almost too hard to put into words. The challenges seemed obvious at the beginning: will Developers really be able to work alongside QA and vice versa? can we figure out how to involve our customers when they live and work in another country? can we find a way to co-locate our employees to make collaboration a daily reality? can we really produce release-quality software in as little as 2 to 4 weeks?

What I didn't count on were the less obvious issues, which are now coming out in spades: how do you stop feature teams from becoming silos to replace the departmental silos they replaced? how do you unlearn old habits like reacting to failure by going into Crisis Mode, despite assuring everyone that Failing Early is a Good Thing? how do you empower people to make decisions who've never had to make those sorts of decisions before and then differentiate between bad decisions you can live with and bad decisions you can't? what do you do with people who 'embrace' the new Agile ways by learning new catchphrases to justify all of their old command-and-control beliefs? how do you ensure you get releasible quality out of teams when people aren't even entirely sure how you determine that? how do you get teams that claim success to understand that their features are only finished when others are able to use them? and the question of the week: what do you do about all those millions of lines of legacy code for which you have no automated regression testing ('regression testing' used to mean 3 months of manual testing by a QA department that's now disbanded)??

If I were in charge (God help us all), I think I could proclaim answers to all of the above and live with the consequences. But the endless debates that rage on these topics, and dozens more, leave me utterly drained by the end of most workdays. I seldom find the perspective or energy to step back and see just how far we've come, which is considerable. Some note-worthy accomplishments, in less than 2 months:

- nearly complete co-location of feature teams (almost 100 ppl relocated)
- generally high degree of enthusiasm for Agile and working in feature teams
- improving (though still iffy) ability to estimate features and tasks by large numbers of people who never previously had to do so
- excellent intra-team working dynamics, in most cases, despite being thrown together from different departments
- almost universal belief that Agile is not just a passing fad for us

More later. Possibly!

No comments: