Questions are an integral part of the necessary conversation between developer and customer. First we need to define a few terms. When I say developer I mean the person or persons who are responsible for decisions that directly impact the functionality of the product. This impact can be in the form of lines of code (e.g. implementing a new feature) all the way to decision about what features to include. So, as you can guess we have different levels of developers.
Likewise, we have different levels of customers. On one end of the spectrum, a customer is the entity that is requesting or using the product. This is the traditional definition of ‘customer.’ But I urge you to consider that the owner of a feature (e.g. the component lead) or, in the case of bug fixes, the support team as customers and treat them accordingly. The same goes for product managers. Anyone that has a stake in the functionality of the product should be considered a customer.
This is where the difficulty begins. Developers on any project can tell you that they not only must understand the technologies they are using to develop the product, but they must also have a complete understanding of the business or process logic they are trying to implement. This usually involves figuring out the operation and duties of several interested parties (or customers.) The inherent problems frequently encountered when a developer confronts the customer is assumptions of understanding and thinking in the technology. I will address each of these individually.
Assumptions of understanding happen when an interested party takes their own knowlege for granted. It happens on a daily basis in a variety of contexts. For example, an employee at the grocery store knows that they store Panko breadcrumbs in the Asian-specific section whereas a patron of the same store might assume they are stored with the breadcrumbs. Ok, that isn’t as great of an analogy as I hoped, but the concept is the same. Developers might take for granted knowing the difference between a page design application such as Adobe Indesign and a content management system such as Plone, or Joomla! Sure, they both allow you to visually configure a page but the end media (printed paper versus webpage) are drastically different. A customer might not make the distinction.
Thinking in technology is very dangerous for any project. It falls back to the principle that no tool is universal. Sometimes developers get the idea that they are a specialist in some technology–in this case let’s say the specific technology is a framework–which leads them to think and decompose a problem in terms of how that technology will solve the problem. Is this a bad thing? Not always. After all it is the first step to getting a project rolling. But what if, say in the middle of the project, the developer determines that a different framework would have been suited for the job? Or even decides that a different language has better tools to accomplish the job in a more stable manner. In this case thinking about a specific technology led to a bad decision that could potentially derail the project weeks into development.
So we get back to the conversation that started the project. A developer is responsible for obtaining the information necessary to develop a winning solution. The only way to get this information is to ask the correct questions of the customer. Questions the customer will understand and relate to the “big picture.” Here is an example of a typical customer/developer conversation:
Customer: We need something added to the website. We have reviewers that will be rating the people’s photos on a scale of 1 to 10 and then picking the winners.
Developer: Ok. So the reviewers are allowed to go through the submissions and rate them, and then from that you want a list of the photos ordered by their rating. Is that what you want?
Customer: Yes. That is exactly what we want.
What the developer does not know is that the reviewers are actually a team of reviewers that are assigned a certain photograph to rate. Then a committee goes through the rated submissions and even if a photo is rated highly it might not be selected as a finalist. It’s a very subjective system, but it is what the customers contest calls for.
The developer should have asked a simple question instead of phrasing his interpretation of the request as a question, “Will you walk me through the review process so I can get a grasp on how this will work?” Then after he learns about the team of reviewers concept and the committee component he will know that even though the photos can be ordered by their review score the finalists will be chosen by a separate review committee.
I know it is difficult to know which questions to ask which is why I intend to give you the gangsta way to approach customer conversations. In multiple parts, of course.