Working with clients do not always come easy. Especially in software development business. You can find on internet (and hear among colleagues) a lot of stories about horror clients or projects that failed because of disagreements.

I would like to share my experiences and thoughts about relationships with clients as well as point out a couple good practices and things important to look after.

Background. Where it all came from?

I am a co-founder and CEO of Clearcode – software development company that as for writing this post, hires over 50 people and works for various size clients from around the world (ranging from startups to corporations and governments)

Starting early days when there were only six of us and throughout the growth of the company over last couple of years, I came across many different clients and attitudes towards software development.

With a couple of rare exceptions my experiences were very positive. I am almost certain it wasn’t because of pure luck, but due to several good practices that we followed. I want to share them along with my comments not only for potential clients to learn about what they could expect from us, but also I hope it will become a good reference for our future employees.

As these good practices are generic, I hope that they will be useful for many business owners, managers, sales people and others!

Good practices.

Always keep clients informed about the progress.

Your client not only has a right, but also should know what’s happening in his project. In other words, give a quick update to every client regardless of you were asked to do so or not.

It’s good to have an update call weekly, or at least send an email with a quick summary of what has been done and present what you plan to do next. If you encountered any challenges or problems, be prepared to tell how do you plan to deal with them, or at least how are you going approach them.

Re-confirm the initial scope of work twice.

Make sure your clients understand what they are paying for. Despite some of them may have technical background, it’s good to use easy to understand language, or even explain with examples, to describe what is in and what is outside of the scope of contracted work.

Also it’s worth spending a bit time to educate each client about your process, steps during the project, how is he engaged into them, when the work is considered as completed and how is it going to be billed.

Be flexible with reasonable changes.

As the scope of work may (and in 90% of cases at least slightly will) change during the project, be prepared to handle change requests in a painless way.

In case the change is reasonably small and neither affects much the timeline nor the budget, let them slip and include them directly in the scope.

When something bigger pops up, give advice on how to reduce additional work or at least reduce delay in final delivery. Be understanding and enter the dialogue – in most cases clients don’t want to add up work or make a fool of you (of course that may happen), but want certain work done and may not be aware about what is required to deliver it.

Set responsibilities on both ends.

Remind your clients about their part and responsibilities in the project. Make them aware that their part may not only affect the timeline, but also in some cases the budget.

Having the client that participates in the process of designing UX as well as gives feedback on early stage of the project (but not too early!) never harms and in many situations helps a lot. At the same time, the client has a better idea of how the end product will look like and/or work.

Express your ideas and stand up for them.

When you believe an alternative solution or approach may be better for your client, try to convince him. Even if he may have different opinion, present your arguments and do not give up on it too early, especially if you know you are right.

If you are passionate about certain area, you know what you are doing, and are fully engaged with the project you have a good chance of convincing the client and hearing “Thank you” when he realises that you were right.

Keep contracts simple, cash flow positive and establish mutual trust.

Keeping contracts simple and straightforward saves legal costs and helps closing deals faster. Even a long and complex contract probably do not cover everything, as it’s simply not possible to predict every situation you may run into during the project.

Much more important thing to look after is keeping project’s cash flow positive and establishing mutual trust – remember that without the later, we would never have developed a free market as well as if you end up going legal way you may not see your money for many months anyway and sometimes lose much more than that!

Don’t make up excuses.

When you crossed the deadline, or did not manage to meet your client’s expectations don’t make up excuses. Client is not necessarily interested in why you didn’t deliver, but how do you plan to deal with the problem and how can you make up for it.

Don’t try to cover things up.

If something went wrong, don’t try to cover it up. The ugly truth is always better and will work in favour of you in long term than a lie or not giving full information. Play with open cards and you will likely become a trusted partner for the client.

Also, make sure you communicate everything to your client in a clear statements, that cannot be misinterpreted and do not mislead him.

Don’t give up on the project.

There is nothing worse than giving up on the project. It’s the most destructing decision you could make – it is leaving your client unsatisfied, leaving you probably without money and leads to a lot of stress on both ends.

If you fear about not even breaking even on the project, take into account also possible future revenue (work) from this client as well as referrals he may do when he is happy with the results.

Don’t overpromise.

Don’t promise miracles in context of timeline, budget or final product if you are aware that it’s not possible – after all you don’t want to under deliver or give up on the project at some stage.

If you are worried about presenting too long timeline or too high estimates, instead of providing just numbers, explain them in detail including in depth breakdown of work.

Be flexible. Take individual approach.

Try to be flexible – approach each of your clients individually to work out the best co-operation model. With some clients it may be using a bug tracker, wikis or other project management, planning and collaboration tools. In other cases you may need to take notes over calls and send over email summaries afterwards to confirm what you agreed on (it’s really important to do that, as until it gets written down it may be easily forgotten by the client).

When it does not work out… keep good relations!

You have done everything you could, but it does not work? It probably won’t ever. If you cannot keep the relationship with your client going, he gets on your nerves and you cannot stand another meeting or call, that’s very bad and nothing good will come out if it. Try to split up in good relations, because you never know when your paths will cross again!

Summary and the long-term value.

To sum it up, it all comes down to maintaining good communication and delivering what you promised.

When you do that, it leads to keeping current client base (keep your clients coming back or increasing their spent) as well as growing your business through clients’ referrals. It also builds a long-term value for both sides – you having steady client base and new leads, and the client having a good and reliable service provider.

At Clearcode, our client base is growing rapidly, we have a lot of referrals (around 40-50% of new business comes this way). We are certainly making mistakes from time to time, but by keeping good communication and our engagement, in most of cases it all ends good with “Thanks for good job” from the client. And it’s great feeling to hear that!

Further reading:

Post illustration credit: Mr. Pony