– Anonymous
Several
years back, I was involved in a project to create a custom version of a mainstream
stock trading application for a small set of hyperactive traders who executed
hundreds – sometimes thousands – of trades every day, and generated quite a bit
of commission revenue. We dubbed this version “ELITE”, and put a couple of
bright developers to work on it. This was our SWAT team.
The idea went
like this: by implementing the advanced features hyperactive traders wanted in
a custom version of the application, we can release these features quickly and
with little concern for adoption by mainstream traders. What was even more
enticing about this approach is that once one of those features was thoroughly
vetted by those fastidious traders and had shown to be applicable to the general
population, all we had to do was comment out a few #ifdef’s and voila! Every
customer had access to this feature.
By any
account, the ELITE version was a runaway success! We were responding to those
customers quickly and adapting the software to their unique needs. They were
trading like crazy and racking up commissions.
In terms of
execution, we had little or no documentation to rely on – sometimes just a sketch
and some handwritten notes. We sat down together, the business analyst and me,
and tinkered with the wireframe until we were happy with it. Then the
developers built it and showed to him, and then we would adjust it and repeat
the cycle a few times. When we were satisfied we had it right, we made a build,
sent it to QA, and a week or two later, the ELITE traders had their precious
feature.
What was
remarkable about this is the fact that at that time we were still a couple of
years away from implementing an Agile approach in any of our projects. We
literally stumbled upon a working Agile model, and executed it inside of a
Waterfall system. In fact, while these ELITE features were being added to the
code base, the mainstream projects were trudging along, business as usual. For
every mainstream release, we would release 3-4 ELITE releases. This may not
seem like a lot, but for that product, in that timeframe, in that environment,
it was indeed a miracle.
Years later,
as I reflected on that period, I realized how forward thinking we were, some
would say lucky, in adopting a model that was Agile at its core if not in the
skin on the outside. True, we didn’t have daily standups or retrospectives, nor
a burndown chart or a story board. What we did have is the essence of what
Agile is all about: we were sitting down to discuss and design the features,
building a working model for the customer to validate, and making incremental
changes based on the feedback.
These days, with Agile practices as commonplace as happy hours are, I worry that we might be losing the essence of that Agile experience, namely quickly responding to change and constantly iterating based on customer feedback. There is incessant noise about Agile artifacts and ceremonies cluttering our conversations. Unless we keep the essence of the Agile experience front and center as our guide, and measure every decision we make and every direction we take with that ruler, we risk creating an environment as rigid and unforgiving as Waterfall was. We especially have to be cognizant of traditional boundaries between technology and business getting slowly reintroduced. So stand up, leave your desk, and walk over to the other side of the building. You’d be surprised how a long email chain can be cut short with a 10 minute conversation.