In February 2001, the great software development war started. Contrarians from the extreme programming factions met in a remote Utah mountain lodge to plot the hijack of traditional software scope, document, code and QA test development methods known as “Waterfall.” There they created the Agile Alliance, a.k.a., the Anti-Methodologists. They cried out against needless software design specifications, time-wasting user documentation, and of course the elimination of quality assurance testing with committed release dates. Application development from this moment on would be performed in short cycles known as sprints and without final delivery dates. Sprint releases would be fast and frequent. Quality assurance testing would be transferred to consumers to speed time to market and reduce development costs.
Developers were initially slow to embrace the heretical Agile methods over the next decade. After all, software development methods based on Rugby principles could be a stretch to some. Finally however, the last traditionalist programmers who would not comply were all forced into a barrel and pushed over Niagara Falls to a frothy death. There were no survivors. A few slicker-clad Visual Basic mourners were bussed from their assisted living facilities to the site to offer their prayers and solemnly sing TLC’s ”Don’t go chasing Waterfalls” from the deck of Maid of the Mist.
The Waterfallian descendants were then summarily rounded up by scrum masters everywhere and resettled in programming camps. They were forced into rooms with floor-to-ceiling white boards with senseless scribble everywhere. Scrum masters standing behind their lecterns all day indoctrinating the mindless developers with the 12 principles of Agile as if delivered by Moses, chiseled on tablets (stone not iPads). The ever-present Agile Manifesto, is always written high on the whiteboard wall so it could not be erased without a ladder and white board cleaner. Index cards containing the brief feature descriptions were currency among the sprinters who had mere weeks to create a demonstrable application. “No more than 140 words to describe the features people! Make it fit on the index card you scrumbags! “Testing, we don’t need no stinking testing” the scrum masters exclaimed. “Let the damn end users test it after they buy it!”
This may seem like a futuristic, sci-fi thriller script from Orwell or Bradbury, and indeed it might be if it weren’t mostly true. (Please allow for some dramatic license for the demise of the waterfall programmers.) The physical scrum-room described exists. The Agile Manifesto exists. And the 12 Agile Principles that are virtually gospel to tens of thousands of app developers the world over who specialize in delivering perpetually unfinished apps perpetually exist.
The goal of the Agile Principles appears to justify how developers today requires little or no feature documentation for the programmers to initiate a project. It mandates no real project plan, minimal QA testing, and consequently no definitive end. Agile development is purported to be much faster than the older method and why wouldn’t it be without planning, documentation and testing.
Customers are supposed to be involved throughout in an iterative process of constant version updates to approve or suggest changes. The more customer input the better, is how developers sell Agile to management and customers alike. While it is true that customers can view various screens of what the application could look like in short order, it creates false expectations about actual product readiness. The functional code behind the screens is invariably a long way off.
Engaging customer input may appear empowering, but how often do customers truly know what they want? How many people get involved (hint; too many) in the “if we could just have this” process? Doesn’t everyone want to taste everything at the app feature buffet?
It is time to push back people! According to Agile principles, we end users and consumers are stakeholders in this process. I don’t want to bring my new $3000 curved TV home and then have to download new firmware for 20 minutes before I can watch it. I don’t want to perpetually download app updates on my family’s phones, tablets, laptop and PC’s because some agile developers were sitting in their beanbag chairs eating snacks, and watching their co-workers play foosball in the company playroom instead of testing their code. I don’t ever want to see any more screen messages like, “The developer of this app needs to update it to improve its compatibility” again. I don’t want to be an unpaid quality assurance tester for unfinished products anymore! I want my stuff to work!