ASAP Principle for Agile Development
ASAP Principle for Agile Development
Users don't really like having to constantly update their apps. And yet this seems to be a by-product of Agile development. Is there a more user-centric way to do Agile?
Join the DZone community and get the full member experience.Join For Free
The Agile Zone is brought to you in partnership with Techtown Training. Learn how DevOps and SAFe® can be used either separately or in unison as a way to make your organization more efficient, more effective, and more successful in our SAFe® vs DevOps eBook.
I noticed a disturbing problem occurring during the development of any application I was part of in my personal history. The problem was that the application we were working on became the center of the whole universe. The application we were working on became the whole universe itself. Nothing else existed. Only our application. We thought the whole IT segment, the whole IT world, was created because of our little bright application star!
But please, do not get me wrong. I agree that it is completely OK to make our application, the product we are working on, the center of OUR universe. Because it is ours! Our own! Our precious! One application to rule them all. One application to rule you all. But what makes us think that the application we created will be the center of our CUSTOMER'S universe? That is the question.
This probably seems to be of little importance to you, if any at all, but I disagree. When I look at a product from the user's perspective, what are the expectations I have? What is the user's perspective, anyway? What makes us think, what makes us so sure, that we do understand the user's perspective correctly?
We Are the Universe
It goes like this: everything is about our application. Period. Look at it. What it does, what it is capable of. What a beauty. Here we are. Look at what we did. Look what kind of perfection customers will get. Celebrate! Such a piece of working software. Of course: check our application against the applications of competitors. Isn't it better? But what does it mean, better? Check the application against the operating system. Is it working fine? No failures? Is it compatible? Well, let's go out. Release it. Release the Kraken!
And in the next version of our app, we will add another new feature, other new functionalities, another and another new "something." New something that our customers want. Because they still need something new, they still need something more. They are still hungry for some surplus value! More and more surplus value.
But, do they? Do they really want it? I do not know and I am not so sure about that. Of course, I am just a member of the development team. How should I know? My view is really restricted. My tunnel vision is active even if I try hard to be independent and as objective as possible. But, is it even possible to be a member of the project and at the same time be an objective observer?
Various Different Examples
Let's try this one. I am a computer user. As many people are; indeed, as almost everyone on the planet is. I am using operating systems. I am using applications. I am using services. So what are my opinions on these applications and services? How do I evaluate the so called progress of these applications and services, the "evolution" from older versions to the new ones? From the user's perspective, of course. How do I feel after the installation of updates or after upgrades?
Many applications I used to like, many applications I used, became more complex, filled with various functionalities. Various functionalities I will never use. In fact, these applications became more monstrous, I must say. I do not know why this or that functionality was added to the program that was great before; why the user interface was changed when it was cool enough; why the application was changed into something new when it was absolutely perfect before? Who decided? The users? Which users? Nobody asked me. I am a user! Did they ask management, the developers? Why? Where was the idea born that change is needed? Was it because the satisfied users were silent? Was the no-feedback considered as a complaint?
Does Agile Mean Change at Any Cost? (L'Art Pour L'Art)
If the answer is yes, then God help us. Change something just to change it may be a decent enough goal for the development team, so they still have a work to do, but what does it mean for a customer? I (the user) was familiar with the look of an application and, suddenly, boom! The new version of the application came out with the brand new look. I (the user) was familiar with the functionality of the application and, suddenly, boom! My settings were changed with the latest release, new wizards came, new pop-ups, the so called help annotations are shining on me like the stars from the sky. Well, I do not like it. I do not like this new version at all.
Frankly, this is the time when I am - as a customer after such an update - heading to Programs and Features in Windows and removing the application while thinking of giving one of its competitors a try.
Tell Me: Why So Complex?
That brings me to the question: why are so many applications became so uselessly complex? Why, when I am looking for an application for removing old files and registry values from my system, should I install one with a "real-time monitoring service," or with a "driver updater?" Why, when I am looking for an application for editing my marvelous vacation photos, would I get one with "special" features, like automatic "cloud sharing" or "cloud backup" crap I do not need and I do not want? Who designed this? Who created these useless all-in-one monuments, these computer resource eaters?
I do not like them. I do not like the principle or the "philosophy" that created them. I just want to clean my computer from files and registry values not needed. I just want to edit my pictures and save the edited ones. That's it. Why are you offering me something that I do not want and what in fact makes me mad? Will I buy your products and your services again?
25% vs 75%
From my own experience as a computer user, I know this: I never used more than 25% of any application's functionality at the very most. 75% of the functionality I never tried, because I never had to. This 75 % of the application's functionality was there absolutely for nothing. Not for me. That is my view. I've used hundred of applications, dozens of them I have used for years, and yet, the result is the same. I do not need the super features included, I do not need these "Advanced settings," "Expert settings," and "Expert modes," Menus, windows, lists, check boxes... everything that seems to be created only to drive testers of the application mad.
Antivirus solutions are a perfect example, and I think many common users will agree with me. The principle for antivirus solution is this: just install it and forget it. Let it do its job. Why should I care about special settings and various next, next, next setups? I just want to be protected. Can you provide this kind of solution to me? If not, I will ask why not. Because you are concentrating on the development of something some manager figured out from nowhere? Because your entire team is busy developing something nobody will ever use? I do not think so. Let's concentrate on my request because I am the customer. Because I am the one who paid for the show.
And because I want simple, working software I can forget about after the installation and concentrate on my business.
ASAP Principle Over Continuous Madness
No, I do not mean the "as soon as possible" principle by that. What I mean is the "as simple as possible" principle. Do not forget what your goal was. Do not forget what the original purpose of the application was. Do not let it become a monstrous creature nobody will like. Keep it simple. Keep it nice. Keep it beautiful. That is the way! Forget the latest extension, forget the endless check box lists with options nobody will ever use, etc. Maximizing something does not mean perfection anymore.
I do not understand the power that moves people to destroy the working product by adding all the "excellent" and "perfect" features, and in fact, I do not want to know. All I want is simple and working software I will like. So where is the problem? Is it because people believe that if they stop with this never-ending product features' expansion they will have nothing to do at all when every known problem and every single bug is found and fixed?
Maybe. Maybe this ASAP idea of mine is not good enough because it collides with the "Agile" mantra: continuous development, continuous change, continuous delivery. If it is so, maybe it is time to change the mantra. And yet, we are still facing various security issues, there are still possible changes that can be made to do software better, without the need to destroy it by adding new, useless functionality. Keep your orientation on quality, not quantity.
But maybe it needs more thinking, some talent, and of course - some will to do so. To say stop, let's create perfection out of what we have now.
Opinions expressed by DZone contributors are their own.