Thursday, September 24, 2009

Is the customer always right?

"The customer is right" thats a phrase I have come to loathe in my recent work years. So how do I come by my new rant for the moment? I was cruising one of my favorite technical sites on the web SQA Forums (great place for info on testing) and I am reading an old post in the Software Testing Interview Questions section and in one of the posted questions the interviewer stated to the interviewee "but you know client is alway right". Now in the PR game (Public Relations) I understand the need to appear to be customer focused and to actually have your customers like you so you can get repeat business but, what I can't understand from a business stand point is why companies continue to allow this kind of behavior from a client/customer to the detriment of not only its reputation but the product it is putting out. I know we have business culture of disposable employees but think what it must cost not only in morale but time and money to keep this kind of attitude around. What's sad to me is that clients that demand the "customer always right" treatment from their vendors or suppliers often treat their own customers poorly.

Lets look at this in a simplified software development model. From a simple perspective I would break the product into 4 phases, Planning, Development, Testing and Implementation and all 4 rely on each other in some form to provide a complete quality product.

Planing, now here is where the first set of problems usually arise the customer does not know exactly what they want or do they? Often requirements are worked out and approved by the client then sent off to development to be built. The problems often arise when the client starts wanting to add little things here change little things their the "wouldn't it be nice to have" comes up and poof your building a whole different product. Now sometimes the companies representative will caution a client or set some expectation of new cost or pushed back delivery date but most times its truth be damned and "the customer is always right" so the shit rolls down hill.

Development, a lot of people in the industry like to always blame the developers for crappy code or bad product releases and I am not saying they are completely wrong but... lest look at it from their view for just a second. The first set of requirements come in (we know more will come) they start to code to the requirements, changes come in, they re-code to add changes, get a workable product out for demo to the client, clients wants to make major functional changes, client management says sure not problem "the customers always right", time slips by development cant get changes done before release date on current schedule, developers are told to work later and on weekends, morale goes in the toilet and the shit rolls down hill.

Testing, theirs is a thankless job damned if you do damned if you don't. Schedule comes in for product "wow we have a whole month to test this thing!" (that may be generous but on paper they always get enough time to test). First set of code comes in (we will assume we have a test plan test cases and all) you test find a major show stopper or three a lot of little quirks and some spelling and roll it back to development, development curses the words Quality Assurance fights back on a couple issues (mainly show stopper, who knew,) marks them as fixed/as designed and sends them back, client changes mind development under the gun QA time gets cut to 3 days for a brand new build, QA implores management for more time, management comes back and says we understand but "the customer is always right", QA gets the new build works 18 hour shifts for 3 days along with development to fix any issues found, times up we got to deploy, code deployed a bug is found and QA is grilled for missing the bug by the client, and the shit rolls down hill.

Implementation, maybe the least looked at section but maybe the most critical. The client wants a cost effective way to implement and deploy the new product but neither they or the management have a clue about the expected use. Now a smart client would take the implementation teams suggestion of biggest and best to be safe but most clients say I cant afford to do what you suggest so we want something cheaper and smaller and the management says "the customers always right" and we start down our track of woes. The implementation team gets the requirements for the system from the client management, they get the hardware spec requirements from development for their software needs comes back to clint management with the suggestion hardware, the client says they can't afford the solutions it has to be cheaper, client management tells implementation its too expensive you have to come up with a different solution, implementation says that is the recommended minimum we suggest, management says "the customer is alway right" so do it, implementation puts the product in on less hardware then recommended, system fails to perform client becomes irate, no where else for shit to roll so company now takes a black eye for releasing a bad product.

Now look at this not so simple interpretation and think of how the company could have saved reputation and at least appear to show that they cared about their work force if they would have stepped back at each iteration and told the client the truth and provided them with the pitfalls of constant changes.

So putting customer service at the forefront of your business model is great but somewhere down the line doesn't the company have a responsibility not only to themselves and their share holders but to their employees and clients to say 'customer your not right"?

So is the customer always right? Only when they are not wrong.

No comments:

Post a Comment