Pages

Saturday, September 1, 2012

Talking with customers

There is a common belief among software developers that they must code as soon as possible since there is not enough time for other activities. That is why many start to write code as soon as they receive the requirements specification without spending time to understand the customers’ needs. No one would ask customers about their expectation or their needs. Most developers ignore the architecture phase; spend little time in design, just to draw some diagrams such as data flow diagram than jump into coding. If they do not understand something, they would guess on what is needed and hurry to get the project done to meet the schedule.

The result is often a software product that does not work as expect and they have to re-work to get what customers’ wants. This situation costs the company time, efforts and a lot of money. Today few colleges teach requirements engineering course, and even if they do, few developers would follow it. The reason among developers is talking with customers takes time and they do not have time. One developer told me: “It is difficult to understand what customers want as they change their mind often”. A project manager explained: “We cannot talk to customers; they would demand more things and waste our time.” When I asked: “What happen if the requirements specification is not clear? How do you know what to do if you do not want to ask? The common answer is: “We just guess what they want. If we are good at guessing, we will be fine but if not then we have to fix it later.”

Of course, most of the time they will produce something that customers do not want and that means more re-work, more costs to the company. I can understand why developers are reluctant to talk to customers; most are not trained and do not know what to ask so they think customers will ask for more and never be satisfied. But I cannot understand why managers do not talk to customers if the project continues to have high re-work rate? Until we establish a good dialogue between developers and customers, software development is just guesswork and costly projects.

There is an urgent need to teach requirements engineering course in the undergraduate program so students can learn how to discuss requirements with customers, determine their needs, set priorities and reduce the issue of re-work. Students should learn incremental releases that add functionality over time. Students should learn to talk with customers by asking questions about functionality and how customers will use their product. Once developers start talking to customers, they will learn many things about how the customers do their work and what they really need. Customers can help explain and clarify functionality written in the specification etc. When both sides engage in discussion about how long it takes to develop a project, they can exchange ideas, develop better solutions and agree on a better schedule for the project.
----------------------------------------
Prof. Vu
Carnegie Mellon University

original source : http://www.segvn.org/forum/mvnforum/viewthread_thread,1499

0 comments:

Post a Comment