I spent an hour last week talking to a couple of developers who are the main people behind a particular product. I won’t name the product or the company, but let’s just say I have been personally working with this product on site with many different clients for the better part of 8 years. The question I asked them is this.. “How do you know your developing what your customers want?”
Before I get to their response, let me say this. I kind of set them up. So let me give you a bit of background. The product in question is being rewritten from the ground up. So the architecture is changing. But the architecture it self is not really of concern to me. If they decide to use the MVC pattern with ADF that means as much to me as if they decided to build JSPs on top of hibernate objects using Axis to expose some web services. What I care about is what happens when I take that product on site and have to make it work in front of the customers.
First of all let me say, I love working with customers. I love the stress and the invigorating feeling of getting a idea to work, while the customer is breathing over my neck asking me when it’s going to be ready. I don’t know, maybe I am an adrenaline junky, or maybe I just like to make people happy when they see the product working with their data. But this part of my job is my most favorite.
With that said, I like to keep the happiness going. I want to know that the idea I had to solve their business problem using the software they bought, is not only going to work, but is also going to make them happy long term. I don’t want them turning around next week, and telling other people within their organization how disappointed they are.
So my focus has always been on the end game, and this always leads me to have the following questions floating around in my head. What will happen when I leave this customer and they are no longer are paying consulting fees. Will they be able to handle support for the installed solution? Will they be frustrated by the software? Do they feel as if their user base will appreciate how the solution improves their job? In order to satisfy my questions I tend to spend a lot of time talking with the customer beyond what is required of me.
Other than the typical requirements gathering process, some of the questions that I like to pose to my customers when I am working with them.
- What is the most frustrating part of this implementation?
- What is the one feature you wish we could have that would make your job easier?
- Tell me what are your users like? (this one leads to really interesting thoughts.) I typically follow up with what are their daily jobs like?
- What complaints have you gotten from your user base so far during testing? (the responses here are also very different – a new blog posting someday)
So back to my original question. The answer I got, did not surprise me. It was a simple “I don’t know.” Most development shops depend on a few people to tell them what the customers want. And they code to those requirements. This is the less costly, easiest way to go about performing development.. so it has it’s advantages. However I don’t think it works well, and the answer to my question proved it.
This has to change.
