views:

432

answers:

11

Personally, I've found that when good developers deal with clients, they often get sucked into the after-sales support process and this process has been difficult to reverse, so was just interested to hear the various strategies that developers employ in maintaining a healthy, useful relationship that keeps clients using the right person at the right time.

So do you and, if so, how do you deal with clients?

+6  A: 

Just a tip: Write down every single thing a client says to you.

Ali A
+4  A: 

This is a pain we feel as well. Once you help out a customer it is too easy for the customer to directly contact the developer later on and request support. And since we usually aim to please, and probably feel sort of responsible when the application we built for them has a problem, we too often give the customer a quick helping hand.

I think that the developers should be separated from the customers, but this requires that the company has a support/concultancy department which can fix the problem instead. They in turn should be free to contact the developer, unless it's a huge company with a mainstream application where there is a less risk that the problem can be traced back to a problem with the sourcecode.

But let me tell you, I understand how difficult this is. I've been working in our consultancy shop for many years, starting from support and now I'm mostly managing the other consultants and developing. There are a lot of customers (like hundreds) who feel they have a personal relationship with me, and assume that they can call me directly even after years and years.

My tip is to make sure you have a good network of concultants and supportworkers who can help the customer for you, and have them contact you instead if they can't figure it out.

Frode Lillerud
A: 

Lots and lots of communication. Communication can be as simple as checking in with your customers by stopping by at their desks (if you are co-located) or keeping in touch over the phone. The more personal the communication is (in-person beats phone call, phone call beats email, etc.), the stronger your relationship will be.

Another good conflict resolution practice I've used is keeping as much information as possible in a single, shared place. I've used a bug/feature database (JIRA), a wiki, and even a network share drive for this purpose, but the point is that neither party has exclusive lock/write access. Updates can be made together with your customers, and there is a clear, public record of the change history of your system.

jordan002
+6  A: 

Most of the projects I work on are done on time-and-materials contracts, which means: we give the customer an initial estimate of how long the project will take but bill for actual hours worked, whether over or under the estimate (I don't know why a client would agree to this, but they do). Once the project is "complete" and in production, we set up a service extension to the time-and-materials contract, creating a block of billable hours to cover after-sales support. When a client is aware that they're being billed for all contact with us, they tend to keep that contact to a minimum.

MusiGenesis
Upvoted - Clients are *much* more frugal with their money than they are with your time.
Sherm Pendley
+1 for accepting the unavoidable, and for setting expectations *ahead of time* to handle it in a mutually agreeable way.
Adam Liss
@Adam: it works pretty well, although the above description is more theoretical. In reality, projects that go over usually get re-negotiated with us eating some hours (for goodwill and continued business). And occasionally there is some yelling.
MusiGenesis
+5  A: 

One other point: I've found that it's best to communicate with clients via email where possible. It's a much more efficient way to transfer information (assuming everyone involved can write), and it leaves a permanent record of what the client told you to do.

MusiGenesis
Upvoted - Although, I've found the CYA aspect more important than the efficiency. How many times I've heard "but I didn't ask for that," and been able to respond with "no, but your partner sent me this email..."
Sherm Pendley
Yeah, the CYA is the main benefit. Also helps precision: the client can think about what they just typed and correct it if necessary before they give it to you. If they just say it and you write it down, no more thinking usually occurs.
MusiGenesis
Downvoted. Email are so impersonal, and using them only is so againt agility. Email are great, but there are just one tool in the tool box and nothing replace "face to face" on a regular basis.
e-satis
Upvoted - I have rude clients that interupt when I'm speaking so I get my whole point accross before the speak.
Tim Matthews
+2  A: 

I just finished my education and am working at my first job, but here is what we do:

I communicate through a third party from the same company with "higher rank". The third party is someone knowledgeable of the requirements the software should have, but not in software engineering. When I ask about specifications, or send them proposals he distills the essence of their answers send them to me.

I think this way of working with stuff limits the amount of bullying a customer can get away with when it comes to changing specs, expanding specs etc.

For me it's especially useful since I'm only 21 years old, and people might have trouble believing I can get things done.

Nailer
It's not that people lack confidence in you, it's just that they're experienced enough to have learned that everything always takes longer than expected.
Sherm Pendley
Oh believe me, I know things take way longer than expected. Even though I'm young I've worked on plenty of projects.
Nailer
+2  A: 

best practices:

Remember the client is the one who signs the checks.

Users work for the client.

Refer any user requests to the client for approval.

Always deal with the client because they understand that everything you do will cost them money.

If the client wants after the sale support and is willing to pay for it then give it to him cheerfully.

Oh and what MusiGenesis said!

kloucks
Just make sure that everything you do *does* cost them money, and that they *do* understand that. As Heinlein said - TANSTAAFL!
Sherm Pendley
@Sherm Pendley: Agreed!
kloucks
+2  A: 

The best way is to never ever ever give your direct line to a customer. Have them go through Tech support (if it exists) first. We employ this method and it works well. The software developers are the last resort - for things that support simply can't do/don't know how to fix -- such as a DBA not knowing that the servers are instanced. But it will cut down on the "it's not connecting to the internets" type of phone calls.

You could also force all support requests to go through email/secretary. At that point, you can discern which ones are critical, and which ones can be solved with a simple 'tutorial' on how to fix the problem.

And as stated above - record EVERYTHING in an exchange with a customer. Doing so prevents the 'well he said she said' deal that customers can fall into.

Then again -- if you're getting a ton of customer support issues, you should be looking at the cause of it - whether it's a training issue, or whether the software is legitimately buggy.

MunkiPhD
+2  A: 

In our company, every developer is also a salesman. If I step over the door of a Customer then I'm in a good position to make more business.

  1. They know me and I have credabillity because I've allready delivered to them.
  2. I have knowledge about their business
  3. I use my knowledge to ask questionas about other parts in their business
  4. I plant hooks to them when I talk to them, in their best interrests of course.
  5. I make clear that we are not a "hit and run"-company, but there to really support their business.

Maybe this is not how all company does, but I think you should use the people you have that allready has a foot inside the customers company to really work with them and make more business and tie the customer tighter to you.

Stefan
+1  A: 

I personally think developers should never interact with clients. This is why you have the Q/A team. They get requirements, hand them to developers, discuss any issues, schedule development progress meetings. If developers have questions, the go to the Q/A personnel responsible for the requirements and documentation. Developers are engineers, not salesmen or negotiators. They should be given environment to develop stable, working code without getting distracted by customer phone calls. This is how many companies deal with customers regardless of company size. In the end, your chances of completing a project on time are higher than when you customer calls up and decides to change requirements or requests a feature. Which would probably mean you have to go back a couple of iterations and change something that may break everything completed past that point.

+4  A: 

I'd go the opposite of what have been said.

The client is your number one information source

  • Avoid intermediaries (human and technical)
  • Keep tracks (not to use it against the customers, even if it can happen, but because he pays to get what he wants)
  • Communicate - on your initiative - in a short regular basis but for small amount of times.
  • Any doubt can be cleared asking the good questions. The guy don't want that ? Get rid of it (even if you like it better). The guy want that ? Why not, add time and money on the contract.

You must train your communication skills

Most of what has been said here before is essentially related to the fact that programmers usually have poor communications skills. So they fall into the typical traps :

  • customers give them bad info
  • they waste time
  • they get stressed

At the end, nobody is happy.

But with trained communication skills you will learn to direct when, how long and about what your chats will be, and so :

  • Make any deal quick and nice
  • Give confidence to the client
  • Understands what the client wants (not what he says he wants)
  • Ensure is satisfied with the answer (even if it's nonsens for you)

Everybody will be happier : the customer will feel good and let you work in peace while you will have the information to keep working. Eventually, the resulting software will be better.

Think talking to customer is boring ? They think it too. And paperwork is boring as well, but you must do it, so do it well instead of looking for excuses.

e-satis