Being Agile in a Waterfall Environment

Where I work the waterfall process is the norm. For a while I have let this fact frustrate me. This has led to me doing a less than stellar job. I would simply throw my hands up and say “It is what it is” and thus pass the blame to others. The victim anti-pattern! What makes this story even more ironic is that almost 7 years ago Rich McCabe and I wrote a paper titled “Should You Be More Agile?” in which our target audience were people in my current position!  Recently I have changed my attitude.

I knew I couldn’t do Agile full blown as access to the customer was off the table. I did have a BA that could act as a customer surrogate so I ran with it. The process has requirements handed off between development and a BA. I got permission to use a teammate to pair with. My pair wasn’t fully dedicated to the project as we both had multiple hats to wear.

We started each day with a 1 hour pairing/check-in session. The first one we  prioritized the requirements that we understood and started working. The first obstacle is that we were adding features to an existing system that was basically un-unit-testable. We did our best to work in short cycles and test (via GUI and DB) as often as possible. It was slower than I would have liked, but it worked better than our typical “one program in a  cube for a while” process. In between each session I would meet with the BA about requirements we needed clarification on as to not slow up the time the pair was together.

After 1 week of working this way we got all the new features done except one new report. The report looked harmless. We estimated it at 3 sessions. After 3 sessions we didn’t even have all the data requested, let alone a presentation of it. After 8 sessions we had the data on the screen, but unformatted! Needless to say we let our enthusiasm of our early success color our estimate. We also didn’t break the feature into small enough chunks nor take enough time thinking about how we would get that data. We also go stuck in several approaches to display the data that came to dead ends. To top it off we had no tests! We decided that making the system testable would have not added enough value in the short time we had. I didn’t like it, but practicality won out.

I have learned some things in this short effort:

  • When stuck, go back to first principles and find a way. Initially I balked at the idea of not involving the customer, but after some reflection realized that though it was less than ideal I did have a customer surrogate.
  • Remain practical. TDD can’t be followed with out unit tests. Spending more time on making a system unit-test-able than it takes to finish the project without it will only cause doubters to have reason to doubt. Use the principles and move forward, adding value each day.
  • Keep disciplined. We could not dedicate 100% of our time to the effort and on some days we got less that 50%. We were able to remain successful when we stayed disciplined (only code together, test everything, estimate small chunks). We failed when we let our guard down and underestimated a fairly large chuck that should have been split. Then we used the pressure of making a deadline to cause us to stop testing everything and code separately when one of us was busy with other things. When we refocused we go the job done without much effort. Discipline is key and doubly so when you don’t have a good support system (automated testing, full-time team, customer involvement).

Given that we are doing this at a time when we are moving platforms gives me hope for the future. The new platform will start off testable from day 1 and hopefully the other obstacles to better productivity will also be removed. Until then we will keep on keeping on.


Leave a Reply

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

You are commenting using your 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

%d bloggers like this: