views:

484

answers:

6

I have a challenge I need some input on.

I am currently recruiting programmers for a new development department. I am looking for people that are brilliant at their work – so brilliant that they might “lack” some other things that I normally would require them to have (e.g. speaking Norwegian and (to be honest) – social skills in order to be able to meet the customer (I’ve worked with several of them before :) )).

My issue is in regards to communication between the client (customer) and the development team.

Background: We have a strategy of becoming our customers extended development department over the next two years. E.g. they consider us as their own department just sitting somewhere else. While we are on our way towards this target, we will have to make money on smaller projects. The work is there, so I am not afraid that we will not manage to stay alive.

But – we all know that good communication with the customer is one of the key elements on providing the customer with what they actually want (we are scrumming by the way) instead of something else. How do I manage to do this with people that do not speak the language, or again, does not even have the skills to communicate with the customer (you all know someone very bright that is going into deep technical issues with a customer that hardly knows the difference between Firefox & Opera)?

I have landed on a solution where I will be the interface towards the customer, the customer will join in on planning sessions, etc., and where the team will still do the demo. But in regards to continuous communication (daily) between the dev team and the customer, I will be the one doing the comms.

I know that this is not the optimal solution – being a middle man a lot of information can disappear between the customer, me and the team. Have anyone been in a similar situation?

A: 

Don't underestimate the value of being in the same place. If communication skills are lacking, being able to point and say "look at this" can be far quicker and more effective than trying to explain everything in a meeting or email. But from "they consider us as their own department just sitting somewhere else" this doesn't sound like it is an option for you.

Nick Fortescue
You pointed at the one of the key elements. We will not sit together with the client in any case... I've been running a dev.department before with clients @ other locations. What "saved" us was the exceptional use of prototypes to explain what we where trying to build in every release.
sonstabo
+4  A: 

Create a wiki. Create a page for your customer which contains pictures, business information, things to look out for, etc.

Have everyone contribute to the wiki, including the customer.

As time goes on, this page (or pages if you split the information on numerous pages) will allow

  • new developers to understand the customer faster
  • see the possible problems that may arise
  • your developers would contribute to the wiki since they have a tangible documentation where everyone can see how much they have contributed to the customer.
  • make the customer feel as if he is part of the development process
  • since the wiki is, by effect, a collaboration document, a common language will appear between everyone. It might not be the same as speaking your customer's language, but it will be a combination of your customer's and developer's language.
MrValdez
We will provide every customer with a project portal (Sharepoint) where plans, wiki, FAQ, documentation, calendar, etc. will be available. Thanks for the input.
sonstabo
A: 

Generally I expect that at least some of your developers will be open to learning proper communication with the customer. Involve those developers with the communication (even if it's painful at first). English is a pretty universal language and your customer will probably be able and willing to speak it.

Shield the developers that DON'T want to communicate or learn to communicate with the customers. They may damage your relationship with the customer and you will damage your relationship with your employee.

Be careful about allowing written contact between the customer and your developers. Written communication often gets interpreted wrong, especially when written by people who do not have much experience writing carefully balanced e-mails, memos or letters.

As you build your relationship with your customer, you'll get to know eachother's personalities, and communication will be smoother.

MadKeithV
I have seen my bit of BAD programmer-customer emails :) One I worked with earlier instructed a person not-technical-at-all on how to log in to the database, check this and this, open registry, check for this and alter that if this=true. And that was one of his better external emails :)
sonstabo
I didn't really mean overly-technical mail (though that can be part of the issue), but rather things like terse and sometimes passive-aggressive mails. Just watch your dev-team when the customer starts reporting what he/she thinks are bugs, but your dev-team doesn't :)
MadKeithV
True, true... even worse than meetings (where I am able to go something with it when it happens...)
sonstabo
+1  A: 

Communication skills are arguably more important than technical skills. A programmer that doesn't communicate well may well cause enough disruption to negate what they bring to the table technically.

Having said that, you still have to realize that not everyone is the best person to be "customer facing". You might designate one or more members of the team as liasons to your customers, and have the communication go through them when possible.

Jon B
+2  A: 

We've had a somewhat similar situation when we did "Beta programs" for select customers. When the customers had questions, they could only turn to the developers at that stage of the project because e.g. the helpdesk was not yet familiar with the new features.

We also used a "middle man" for doingt the communication with the customer and then passing it on to the developers, and this has worked quite well for us. What were the advantages? The customer alsways knew exactly whom to contact, the communication was consistent, some on the simpler questions could be answered without the need to "bug" the development team at all while some more difficult questions could be "boiled down" from a superfluous explanation to the real problem before handing the question over to the developers, both giving the developers more time to concentrate on what they do best.

Of course, if you want this to work, you'll have to make sure you pass on information between development and the customer in a timely manner, but I think it can be worth the effort (and in fact, our developers prefer it that way).

ISW
I have previously had the exact same "position" with one of my teams. And it worked out pretty well. But my question is in regards to development projects in general where the customer input (we use SCRUM) is priority 1 to ensure that we create the things they need (and we create it properly :))
sonstabo
+1  A: 

The developers should be shielded from the customers. Developers are usually hardcore technical people who eat C++ templates at breakfast. The customers are often very non-technical. A customer asking a badly formulated question on some trivial issue to the developer usually irritates the developer a lot causing at least a temporary loss of productivity. So it's better to have special paid people that work in between.

sharptooth