Skip to main content

Agile on Overdrive

It may sound old-fashioned and laughable these days when techniques like UML are so unsexy, but I can still remember the days back at IBM T.J. Watson in the early 2000's when we were working on a prototype of a new VoiceXML browser to inform IBM's standardization efforts in the space. (The language was supposed to be VoiceXML 3.0, and we abbreviated the research project to "V-3" - pronounced "fau drai" in reference to the German V-2 rocket.) We took VoiceXML 2.0 as a foundation but added full DOM and DOM Events support together with XForms as the data model representation.

It was shortly after IBM's acquisition of Rational Software, so we took advantage of that deal and got our hands dirty with Rational Rose. While one of our colleagues kept pushing us to start coding and iterate towards the result in the agile fashion, given the incomplete specs and many open questions stemming from the combination of so many complex technologies in one piece, we prevailed and kept debugging the design in UML for roughly six weeks. It helped us to uncover and resolve many ambiguities and arrive at the detailed understanding of expected behavior before we wrote a single line of code. Then we sat down and wrote the complete V3 prototype in about three weeks. Afterward, we just fixed few remaining bugs here and there during the evaluation, and we were done - on time according to the original schedule as the whole V-3 prototype work was expected to take roughly 3 months.

I am not going to dispute the overall positive benefits of using iterative software development methodologies, particularly agile methodologies such as Scrum and Kanban. I hope nobody wants to go back to the software waterfalls, at least I don't. That being said, I still want to highlight some problems faced by the R&D teams implementing agile in naïve or kind of fundamentalist fashion.

The Problem of Product Increment

The concept of product increment - an artifact of each and every product iteration - is the cornerstone of Scrum and its kin. It is a great idea, having a presentable and deployable outcome after each iteration. But what to do when there is no product in the first place? What if you are in a green field development situation? What if you are re-architecting and refactoring a substantial portion of your application? To paraphrase Peter Thiel's idea from his book Zero to One: what if we want to create something where there is nothing?

The agile iterations don't help with that very much because they tend to be too short to build an entire production foundation in a single iteration. Some techniques such as story mapping remediate this problem by the concept of a scaffolding or a walking skeleton, but even a working skeleton usually takes at least several iterations to build. On top of that, when building a walking skeleton, you need to know in which direction you want it to start walking as soon as it is built - i.e., you need to build a product vision. Unfortunately, agile methodologies won't help you with that.

Agile teams trying to iterate from "ground zero" to the "first floor" often suffer from short-sightedness and endless rework, because each new iteration is expanding the set of requirements so substantially that the foundations need to be redone from scratch each time. To put it simply, iterating blindly from "zero to one" quickly becomes an enormous waste.

Curse of Product Owner

Another great agile tool - the product owner - while being instrumental in building product increments often compounds the problems outlined above. Why do I think so? Because the role of the product owner is sometimes giving too much comfort to the engineering teams - the PO represents the customer and has the domain knowledge, so more junior teams can have a tendency to completely outsource the domain knowledge to the PO and just blindly implement the requirements as they come. "This was not in the original set of requirements, we have to refactor the database schema." is what you can often hear at later stages of product development, when the engineering team fails to build deep domain knowledge and with it the ability to generalize away from the PO's requirements and anticipate the additional use cases which are naturally part of the problem domain but were not explicitly stated by the PO in the original requirements.

Outside of the Box

So according to my experience, a successful strategy to climb to the first floor from "ground zero" is to assemble a small team of smartest people you have on staff and let them formulate the vision, layout the architectural foundations and devise a longer-term implementation plan outside of the regular iterative development process. There are no shortcuts, and no amount of iterations can replace the deep understanding of the problem domain and holistic approach to architecture and data modeling, addressing the entire classes of domain's use cases rather than a few granular user stories taken out from the top of the backlog. So don't be so "keyboard happy" - eagerly starting coding before taking time to think.

To be continued...

Comments

Popular posts from this blog

Coasting Like a PRO

Roughly three months into driving 225xe, it seems about right time come back to revisit the initial impressions and see how the car fares in long-term usage. In this post, I want to focus on the 225xe driving modes of which the car offers aplenty. First, there are the three traditional BMW Driving Experience modes: COMFORT, SPORT, and ECO PRO, which come fitted on non-hybrid powertrains as well. Then there are the eDrive modes: AUTO eDrive, MAX eDrive, and SAVE BATTERY. To complicate this even further, moving the gear stick to the left at any time switches the automatic gearbox to the sports mode, so there are two gearbox modes: Drive and Sport/Manual which allows sequential gear shifts. So in theory, there are 3 x 3 x 2 = 18 combinations, in practice, some of the combinations are mutually exclusive, so it is not so extreme as it seems. What is apparent though is that BMW keeps adding new options while maintaining the legacy options as well without thinking about consolidation. This

First Month of Active Touring

Putting my money where my mouth is, I took on the adventure of buying a plug-in hybrid. A few years back, I used to drive a car only for weekend getaways, so an SUV seemed to be a logical choice. At only fifteen thousand kilometers driven annually, the fuel economy was not a significant issue, the driving experience was the main thing. During the past few years with family and small kids, the car usage became more spread out throughout the week. With that said, I noticed we maintain two very distinct driving patterns: many short trips around Prague during the week to get kids to school and sports and then longer trips, roughly 100 miles each direction, during the weekends. With short distances and many cold starts due to the city driving on the workdays, the already poor fuel economy of an SUV deteriorated further. I realized when our car was up for renewal that it was almost as if we needed two different vehicles for two different use cases - an electric vehicle for city driving a

Version 2.0 Syndrome - Why the Software Architecture Matters

"Guys you will never have a chance to build the version 2.0, you have to get it right from the get-go, or keep suffering from your mistakes for the lifetime of the product." - Jiri Karpeta, my boss at LCS International, used to say. It was back in 1995, and while LCS's bread and butter were Helios, an ERP for the SMB segment, we were busy building Noris - the future LCS's flagship ERP for larger enterprises. Of course, given the above philosophy, LCS was quite heavily invested in CASE tools to support our software design efforts. That's where I learned the first time that software modeling matters. But back to the original statement above that you "never get a chance to build the version 2.0" . It may sound too harsh, too fatalistic. Well, you may be right, there are always exceptions to the rule. While I don't have exact statistics at hand, my experience shows that the statement is more often correct than not. I have interviewed hundreds of softw