The customer may not always be right, but they're still our customer
One summer in high school, I had a mandate from my parents to get a job. If I was going to work thirty-plus hours a week, I wanted more than minimum wage. Growing up in Orlando, Disney World was an attractive place for teenagers to work during the summer. They paid a whole $1.10 over minimum wage ($4.25 at the time, for a whopping $5.35).
In the end, my illustrious career working for The Mouse didn't last long. I quit after four days (that's a story for another time). But during that time I learned two valuable lessons:
- Some days your boss is The Mouse, some days your boss is "The Rat". (I had The Rat unfortunately).
- The customer may not always be right, but they're still our customer.
Software customers
Working in software development, there is always a customer. Sometimes it is an actual paying customer, other times it's another department within the company. Both types of customers, while different in many aspects, share one commonality: they don't do software development full time. At best, the customer has utilized your services in the past, and understands the process. At worst, they've never interacted with software development before and have movie-link expectations.
I've often found that the customer thinks they know what the want. As a consultant, customers would come to my company and ask us to create a solution to help them solve a problem. They have nebulous needs such as "we need a website to accept applications" and "we need an app to reconcile our accounts payable and receivable". The solutions to these problems can vary greatly, depending on what is truly needed.
The true need
And that's the hard part. Finding out the true need from the customer. The customer has spent some time thinking about what they need, and has an idea of how that might come to fruition. "Build a website, something something yada yada, applications processed". As software developers (and business analysts, QA engineers, project managers, and so on), we've been on this ride before. We know what's coming. It's the eternal battle of expectations versus a true understanding of what's needed. It's usually a trying journey. The customer is likely wrong, and it's our job to make things right.
Saying no
So, in the name of quality software, we tell our customers "no". We explain to them why they're wrong, or slightly off-path. We put them on a better path. Sometimes we do it without even telling them. "They'll thank us later", we tell ourselves. We've taken some moral high ground that allows us to do the opposite of what the customer wants — I mean — thinks they want.
Two endings
This usually ends one of two ways (and depends on how you treat the customer). In the happy ending, we've helped the customer to see why their original plan wasn't quite right, assisted them in coming up with a better solution. One that both parties have worked together to achieve. The customer has been a part of the process. They have learned. They're thankful. They'll enlist the magic of software development again, and have an even better experience the next time.
Or they won't get what they want. They'll be told they're wrong constantly along the way. They'll go along with (almost) anything you say, believing that you, as the expert, know how to sail the confusing ship that is software development. In the end, they'll have a solution that, according to the new direction you've set the project on, works as agreed. And they'll be confused, bitter, but contractually satisfied.
Becoming "The Rat"
So how did you become "The Rat"? How did the journey to this perfect solution end horribly? Why didn't you see this before?
I don't know if there are any easy answers to how to fix this problem. You've taken the relationship between you and your client for granted. They gave you trust, as the expert, and you used that trust to steer them away from what they needed. Or perhaps to you did deliver what they needed, but through some of the most treacherous waters they'll ever travel.
The best advice is to take preventative action. To see the situation before it happens, and to fix you (and not the customer). This is hard advice to follow until you've made the mistake. But there are warning signs. If you are resenting you customer at any point, especially the beginning, you've probably set yourself up to be The Rat.
Communicate regularly. Let the customer know what you're thinking, why you're thinking it, and what you've seen happen in similar situations. Help them to discover the answer. Getting the answers for free deprives the customer an opportunity to learn and grow. As tempting "just trust me, we need to do it this way" is, that confines the result to some mystery the customer can't explain.
You won't be able to be The Mouse every day, with every client. But put yourself in their shoes. Try to understand how they feel and what the gaps in their understanding are. Build the bridge with them, not for them.