A recent discussion has come up in my organization.
Three years ago we embarked on a “grand experiment”. We re-org’d into 2-pizza service/agile teams, committed to Scrum and DevOps and Agile, trained and hired, and sally forth!
For some teams, this was a natural fit and it worked great. There were a couple of in-house web-based apps that we hosted in a commercial cloud vendor, so those were perfect fits. We set up complete CI/CD pipelines, wrote automated unit tests, used container images, implemented hands-off automated deployment, the whole nine yards. We even automated the legacy bureaucratic process; there were business requirements to deliver certain types of artifacts to the Configuration Management and Information Security teams, so we automated the creation of those documents based upon CI-based runs of code scanning tools, vulnerability scanning of the application servers, etc.
It felt really good. One product in particular did fantastic; we were able to quickly iterate with weekly (or sometimes daily) releases and within less than a year had an extremely mature product with amazing user adoption and positive feedback. By the way, this product was an enormous productivity time-saver for the users, and so the ROI was immediate and huge.
That being said…
The nature of lean delivery, velocity of iteration, and minimum viable product sometimes means that the production versions of the products, especially during that initial beta release, are unpolished in some ways. I wouldn’t say bugs were frequent in our early releases, but without a deep and intense, dedicated test cycle, obviously bugs were found. I think, more significantly from the user’s perspective, there were lots of usability complaints from the users.
As a result of this, there is now a push in the organization to move back to a waterfall model. Get a lot of requirements up front on the UI, build a much more fully-featured product (taking many months), and have an exhaustive testing cycle (again, 1-2 months), before having a big bang release.
So here’s the million dollar question:
Does waterfall result in a higher quality product?
So here’s my perspective on this: if you are using the first model (the rapid agile one), early negative feedback is ok, and in fact this is the point! Instead of guessing up front what the UI/UX really needs to be (and probably guessing wrong), you get at least something out to the users, and then iterate and adjust quickly based upon real-world feedback.
I truly believe that in the long run this gives you a better product. It has very intentionally been molded to fit exactly what the users want and need.
But, to make this successful, there’s a few key success points that you have to follow:
Releases have to be rapid.
Rapid iteration only works if its, well, rapid. If a user knows that usability complaints will be fixed within a week or two, then it’s not as big a deal. In fact, it can make then feel powerful and confident.
You have to actually write automated tests for bugs that you fix week-to-week.
Otherwise, without automated regression testing, it can look to the user like you’re not really moving forward and quality is not increasing.
As an organization, you have to be ready and committed for this.
Getting lots of feedback early, if you choose to interpret it as complaints, then this can look like you’re doing a bad job. This problem is especially exacerbated with a product that has a large, complicated back end. It can look like “nothing has happened” because the interface isn’t really changing, when in fact a tremendous amount of work has been done.
If even one of these items is not done, or is done poorly, that’s enough for the whole system to fall apart.
I’ve noticed that lately there’s been a counter-culture pushback to Agile, typically because of case studies that closely mirror the one above. But if you can commit as an organization,to the tenants above, then your users at the end of day will end up more satisfied. You have directly shown that you are listening to their feedback, and the product they are getting is more closely aligned with their needs.