I am always amazed of how much software is created with the intention of solving a business problem, only to be deployed to production and not deliver any value to the organization.
Some will argue that this is what the short feedback cycles of most Agile methodologies provide. They give you insight from the customer directly, to determine if you are solving their problem but this is where software development is an immature industry. For example:
I always like to give the example of the patient that visits the doctors office complaining that his arm has been hurting after falling off his ladder. He has iced it over, rested it and has even went to far as to self medicate in an effort to subdue the symptoms. The patient then proceeds to tell the doctor that he thinks he must have bruised his rotator cuff and is wondering what his options are to help with this self diagnosis. After a couple of minutes of the doctor looking over a couple of x-rays, the doctor turns to the patient and says, “Your problem isn’t your arm, it’s your back. You have damage to one of your vertebrae that is causing you to feel pain in your arm.”
If this were software development we would have already amputated his arm and given him a new bionic one that would enable him to lift a small car. All the while not solving the root issue but boy what a wonderful technical achievement we would have created.
Joe are you telling me that we shouldn’t listen to the customer? NO! Just like a “good” doctors listens attentively to his patients concerns, carefully weighing every fact of the case. He reserves his diagnosis until he has ran several test and determined if the “data” supports his conclusions. He relies on years of experience and training in order to come up with the best remedy for that diagnosis.
So ask yourself are you solving the symptom, or are you curing the illness?