Agile – How to develop excellent software with agile methods

agileproject-managementRequirementsscrum

The Kano model of customer satisfaction defines different classes of product features. Among them are

  1. Must-be qualities: If these are not implemented the customer will not accept the product.

  2. Attractive qualities (delighters): Features that the customer often doesn't even expect in the first place but cause excitement and delight when being discovered.

Attractive qualities obviously have a lot of business value. They make people buy a Ferrari for 500.000 when a used Fiat for less than 5.000 would meet all must-be requirements.

However, all agile processes I know strongly favor must-be requirements. These always get the highest priority. There doesn't even seem to be a place for attractive qualities in agile.

I do believe that agile processes are very useful in software development. But how can they be applied to create delighting high quality software products and not just the bare minimum that barely fulfills the must-be requirements?

Addendum: As the first two answers have pointed out, it does make sense to give must-be requirements the highest priority. But do we (and the customer) really always know in advance what the must-be requirements are. I have made the experience a few times that requirements which were given a high priority in the beginning, turned out to be much less important, if not useless, later. Therefore I believe one shouldn't slavishly focus on the must-be requirements.

Best Answer

The formal answer is you misunderstood agile, agile does not dictate requirements, stakeholders do. The core of agile is not to carve your requirements in stone but rather have them emerge as you go, in close contact with your client, benefiting from progressive insights.

But that's all theory. What you have witnessed is indeed a common trait of many software production lines that adopted an agile way of working.

The trouble is, listening to the customer and swiftly responding to the customer's needs often soon ends up in not doing any thinking about the product or doing any design at all. What used to be a pro-active process fed by vision and expertise can and often will deteriorate into a passive, entirely reactive process fed by the customer's wishes. This will lead to making just the bare necessities that "will do the job".

The automobile would never have been invented if manufacturers at the time would have been "agile" because all the customers were asking for was a faster horse.

This does not make agile bad though. It is a bit like communism. A great idea that hardly ever works out well because people are just people, doing people things. And the method/ideology/religion lulls them into the idea that they are doing well as long as they are going through the motions and/or following the rules.

[edit]

Slebetman:

It is ironic then that agile evolved out of the automative industry (namely Toyota).

Remember the golden rule of automation? "First organize, then automate". If you automate a broken process, the best that could happen is that you accelerate everything that goes wrong. The people at Toyota were not idiots.

The typical reason for adopting any new methodology is that things are not going well. Management acknowledges it, but they may not understand the core problems. So they hire this guru that gives a resiliant speech about Agile and Scrum. And everyone loves it. For their own reasons.

The developers may think "Hey, this might work. We would be more involved with business issues and we could provide input for filling this backlog. This could be an oppotunity to make sales and customer service understand what we do, why it is necessary, and we would have them out of our hair while we are transparently burning down what we agreed on." No more "stop what you are doing, this needs to be done now" by some dude you do not want to put off popping up at your desk.

Sales, customer service or the owner on the other hand may see it as a way to gain (back) control over this black box of a department that is presumably doing stuff that is necessary. They do not see what is happening in there but they are pretty sure the core of the problem is burried somewhere in there. So they introduce Scrum, install a product owner of their choice and all of a sudden they have all control, all the strings are in their hand. Now what?... Ehrr...

The real problem is often that the shop was not organized well in the first place and this has not changed. People have been assigned resposibilities they cannot handle, or perhaps they can but Mr. Boss is constantly interfering and ruining what they did, or (most often in my experience), crucial responsibilities have not been recognized or assigned to anyone at all.

Sometimes over time an informal organization will emerge in between the formal lines. This may then partly compensate for the lack of a formal structure. Some people just end up doing what they are good at, whether they have a business card to prove it or not. The blunt introduction of Agile/Scrum may ruin that instantly. Because people are now expected to play by the rules. They feel what they used to do is not appreciated, they get yellow little papers with little stories on it instead, the message will be: "whatever you were doing, no one cared". Needless to say this will not be particularly motivating on those individuals. They will at best start waiting for orders and not take any initiative anymore.

So things get worse and the conclusion will be that Agile sucks.

Agile does not suck, it is great for maintenance projects and can even be good for new developments if applied carefully but if the wrong people do not understand it or adopt it for the wrong reasons, it can be most destructive.

Related Topic