I'm Matthew J. Morrison.

A Passionate, professional software developer & hobbyist; Language nerd & regular user of Unix, Python, Ruby & JavaScript.

Fork me on GitHub

My Crusade for Agility: Part 10

October 24, 2011

This is the 10th installment of My Crusade for Agility. I began writing this blog at the beginning of September 2010 about 9 months after starting to work for my current employer. The reason I started this whole thing in the first place is that I saw three things in my new employer: passion, trust and willingness to change. Passion for software development that my teammates and I share, the trust of our employer that we will deliver the products that our partners need to succeed and willingness to change our processes and technology to better help us succeed.

Having said that, willingness to change took time, as did trust. From my employer's perspective, and my new co-workers, I was this new guy coming in suggesting a bunch of changes. I had plenty of software development experience, but not much real experience with the things that I was suggesting, which made it hard to sell. Test driven development, acceptance test driven development, pair programming, iterative development, user stories, continuous integration, and so on. These were all things that I knew about but I had not really done much of any of them in practice, but I knew people who had. Those people are the ones who really helped me get things going at my place of work.

I'm proud to say that with the passion of my team members, the trust of our employer, and everyone's willingness to change we have successfully become an "agile shop", whatever that means. But then again, who isn't? It seems like everyone claims to be "agile", but what does that really mean? I don't know, it depends who you ask. Some people will say that you're "agile" if you do TDD, others will say that you're "agile" if you work in iterations. Maybe it is both, maybe neither. What it means to me is exactly the definition of "agile" which is "ability to move quickly and easily". Adaptive is another word that I think describes "agile" development very well.

To me, the key concept of agile development is being able to continually meet changing business needs as quickly as possible or as they occur. Feedback is important, for software developers and for businesses. Software developers need to know that they are delivering what the business needs and the business needs to know that the developers are developing what they need. We all need the same thing, communication. As early and as often as possible.

As I discussed in my previous post, our communication was not really giving us feedback as early or as often as we would have liked. We have done a solid job of using TDD, ATDD, pairing, and CI, but we haven't really been implementing anything iteratively and getting feedback. This past Monday marked the start of our first 2 week development sprint. This is hopefully a technique that will allow us to deliver an amount of work to our partners so we can receive feedback.

At the end of the first week we have completed the development of 31 of the total 39 points included in our sprint. I'm very happy with that and actually extremely surprised. Not because I didn't think we could do it, but because I was out of the office one day, I left early another day, we got new computers (so we wasted at least a day setting up the new hardware), we did a bit of house cleaning because we have a new team member joining us next week and overall I feel like we have not done a very good job of sticking to the tasks on the story cards.

Not to say that we've been working on completely random or unrelated things, but we have definitely gone outside the scope of what we initially set out to accomplish. While it appears like we are going to get away with it this time, this is a habit that we will need to break for future sprints. One thing that I added to our white board is a TODO box. I just started posting things in there that I come across that are relevant and should be done, but are not necessary to complete the tasks at hand. My hope is that these tasks will be included in future sprints.

All in all, the first week has gone very well. With only 8 points left, I think we will end up making our sprint, which I did not expect for our very first time. I am on vacation next week, so I will not be around for the tail end, but I'm sure my team mates will wrap it up nicely.

I will write another follow up once the sprint is complete to fill every one in with how we ended up. I also have a few other fun and interesting things to share, so tune in next time. Hope you've enjoyed my first 10 installments of My Crusade for Agility.