Your existing clients should always be the first thing on your mind. Any work relating to existing clients should be done before looking into anything else, including prospective client work.

In order to gain a good reputation in the industry, it is vital to make existing clients happy. If you are seen as being more interested in getting new clients than satisfying old ones, not only will you not receive return business, but you may have lost credibility in the industry and the chance of referrals from their contacts.

A good way to think of it is "is the ball in their court?" This means that your client is never waiting for you to do something, and that if there is a bottleneck; it is not on your end.

A good saying pertaining to keeping your existing clients happy is: "A bird in the hand is worth two in the bush".

It is extremely important to demonstrate to potential clients a high level of quality service and attention to their needs; Whenever you receive an email from a potential client in relation to possible consulting work, you should make sure they receive an answer within 5 minutes of you receiving it. This is for 2 reasons:

To show you are keen and to give an indication of the level of service they will receive

To stop them "shopping around"

They will quickly recognize that they will not receive that kind of service anywhere else!

A lot of time in a consultancy can be taken up by producing estimates for clients so they can see a ballpark of what they will be spending. Because this time is not billed, it is easy to end up with rushed and inaccurate estimates, leading to problems later in the project.

A better way to go about it is to spend a little more time, and really get down in detail to what needs to be done. This is called a Specification review and is billable.

The exception to this rule is if the client is happy to invest some of their own time to help you come up with a ballpark, then you can spend some time on it for free as this should help to get the client feeling invested in you and therefore more likely to go ahead with the work.

​A fixed price - fixed scope project sounds good but doesn't always end up with the result either the client or the developers expect and sometimes the key players can end up disappointed.​

There are 4 main reasons...

You can’t predict the future

Waterfall project planning has been proven to not deliver over 30 years of trying... The Gartner Group says 74% of failed software projects in the last 2 years

See the Con​e of Uncertainty to see the range of cost change at different stages through a project:

Figure: The cone of uncertainty in software cost and size estimation

Changes requests are an extra cost and slow progress

It costs more because the fixed price part is fixed to the original scope, not changes. So changes are a cost on top as changes are new work and out of scope

Progress is slower because the change request cycle on fixed scope consumes time and discussion of the nature of work and whether it is in or out of scope

From experience during the development the client will realize some items are not what they wanted, but they still pay due to fixed price

When the client sees the real system implemented they will often have better ideas and realize there are parts originally scope they don’t meet their real needs but because it is in the contract they pay for them even when they are not implemented, and pay extra for the changes to give what they really need

In reality fixed-price fixed scope leads to lower quality in most cases

The lack of a running cost and instead a ceiling on the cost will normally result in a low pressure project environment at the start of the project and very high pressure to complete it only towards the end of the project. In that period of high pressure as developers are working to hit the one big delivery it becomes tempting to them and sometimes even expected by their management that they will cut corners

Instead, the use of an iterative methodology like SCRUM that provides constant progress reporting and gives the client agility to implement the required features with adjustments during the project, works to reduce the cost and also provides the most important features paid as Time and Materials in a working solution sooner.

If you have an existing client, who is already impressed with your work, you don't need to go to the trouble of meeting then to show them an estimate. However, you should at least call them. When you're competing for someone's business, what could be worse than losing the work simply because the client either didn't receive your email, or was too busy to read it? For this reason, always call the client before you send a quote. This way, they know you are about to send them something so will look out for it.

Hi Ed,

As per our conversation today, here is a ballpark schedule for the work we talked about. As you can see all the items are listed separately so you can identify how the estimate is put together. I'm very happy to discuss these estimates with you so feel free to give me a call.

Figure: Always call the client to let them know that you are about to send a quote across, then send an " As per our conversation" email.

Time and materials is the standard mode of operation where the client is billed for the time spent by the consultant. There is no warranty on time and materials work.

Fixed Price

Fixed price is where the client is billed a fixed amount agreed between the client and the consultant. Fixed price contracts have the following conditions:

All specification work to be conducted on a Time and Materials basis

All screen mock-ups and business rules must be signed by the client

A fixed price can only be done on a release by release basis, not on an entire project (this protects everyone)

A 20% premium is added to the release estimates - just like an insurance premium because the consultant is carrying the risk

Variations/change requests have to have separate written approval. e.g. Hi John, You've asked for XXX. This is not covered in the original scope and so will be charged extra. Our estimate is YYY hours at $ZZZ + GST per hour. Please approve.

When working on a Time and Materials basis there are two different management arrangements depending on what the client requires.

A. Ad-Hoc Work

Working on an ad-hoc basis allows tasks to be done as they are requested without any formal approval process. This is a simple approach but provides little in the way of management or accountability. This may be suitable for ongoing work such as application maintenance with longstanding clients OR working under a client manager.

The ad-hoc work approach should not generally be used for project work where the client wants SSW to manage project elements such as time, scope, quality and cost.

B. Managed Work (using Scrum)

The alternative is to work with a project manager (Scrum Master), specification and Sprint plans. In this approach, a method of project management is applied to provide control on the elements of time, scope, quality and cost.

This method is recommended for any work which is substantial and where the client wants a greater degree of control.

As a consultant, it is important to realise that all of your time is valuable.

In the situation where you are at a client site and your time is being billed, don't be conscientious and quiet. You need to make sure that there are no bottlenecks slowing you down. Make sure you have everything you need and, if you need to ask a question, keep asking until you get an answer.

Clients will always prefer a slight irritation at the time rather than an inflated invoice with no result later on.

You need to be persistent. You should make sure that you don't let good ideas go because you get *one* 'No'. Instead put it on a 'My Good Ideas for the Boss' list and bring it up with your boss a few times.

This is a very important concept, just because you get answered 'No', it does not mean that it is a bad idea, or that it will not benefit the company. You may get the answer 'No' for reasons that you do not know about, such as financial difficulties, or it is too busy at the moment to worry about. So put these ideas onto a list, and remember to bring them up with the boss at a more appropriate time, say a couple of weeks later. If you are not satisfied with the result after a few times, consider going a level higher and talking to your boss about your idea, so you understand why they made the decision they did. It is important however to realize that not all your ideas are going to be good ideas, so accept that after you get a few 'No's. Figure: Write down your ideas so they don't get lostPrint "My Good Ideas for the Boss" sheet and have it ready for your bright moments. In case you don't have one in hand, draft an email or a note, but don't let good ideas go.

If you don’t make another appointment to see a client before you leave you may forget, and the client may forget. Make sure they are thinking about your next visit by booking the next appointment there and then, even if it is not for many months.

Figure: Always get that appointment booked Use your mobile phone to book an appointment rather than remembering it later. If the systems are down, you may forget it entirely and that would be worse than never having made it.
Figure: Use your phone to book the appointment so you don’t forget

Often clients will call up asking for a short task to be performed. You need to know how to let them know that the time will be charged.

If it was a quick 5 mins I would do it straight away... however I need to do a little investigation... first impression is that it might take me a couple of hours... if that is OK then I would need you to authorize me to go ahead.
Let me know...

Good example

Figure: Careful! One small free task can turn into a dam-breaking torrent of free work.

The least pleasant part of the consulting industry is dealing with clients who don't want to pay for your services.

It's important that the client is *always made aware* from the beginning what they will and will not be charged for. That way, they will never receive an invoice they are not expecting and so will be happy to pay them.

If an issue does come up, make sure you come to an agreement quickly and don't let the issue fester as it can lead to a lack of customer satisfaction and people can start digging their heels in, leading to a lot of time wasted on working out whether the client will pay or not.

If someone else needs to be consulted for approval (e.g. the boss) get them on the phone straight away, rather than speaking to them later and then having to organize yet another meeting with the client.

​​When a client arrives, your job is to make them feel comfortable and impress them with your professionalism. It is important that clients have a consistent experience in their contact with your company.

Leaving the client standing at the reception while finishing what you were doing

Offering them tea, coffee or biscuits (not everyone likes tea/coffee)

Figure: Bad example - This could start the meeting poorly

Be dressed appropriately

Greet them warmly

Have a firm handshake

Make eye contact and smile

Direct them to wait in the waiting area (so they can learn about the company through our tv screens)

Notify the project manager/developers who are included in the meeting

Ask someone to bring a couple of glasses of water into the meeting (as everyone drinks water)

Join the meeting in the boardroom:- Show some enthusiasm when meeting with the client- Hand over, and collect, business cards - (organize in front of you, to help you remember their names)- Use their names a few times early on to help you remember their name

Figure: Good Example - You are starting off the meeting well​

​​​

​​​​​​You should do a role-play with your manager being the client. Then get feedback on how he/she found the experience.

In an hourly work agreement, the initial meeting with the customer will be conducted by SSW at no cost. Subsequent meetings are considered as specification time and will be charged at the agreed rate. The minimum time chargeable for on-site work is 2 (two) hours per person per visit. The minimum time chargeable for off-site work is 15 (fifteen) minutes per person per request.

In some occasions it may be necessary to compromise by charging for the developer's time but not the project manager's.

Before you attend a meeting you must come prepared with details about the client; meaning no unnecessary questions. By unnecessary, I mean you should already have the answers to these questions. Extensive research is impressive to clients.

So you are talking to a client about their ice cream chain?

How many outlets do you have?
Where is the main outlet?

Figure: Bad examples - you should already know the answers to these questions by use of research tools such as the Internet

I noticed you have x amount of outlets, are you planning to open up more, when and where?
Which of your products contribute most to your gross profit?
How do most of your customers hear about you?
Do you have a customer loyalty program? Is it working?
Where are some of the biggest challenges / opportunities for you at the moment / in the future?

Figure: Good Examples

By asking questions, you show interest as well as initiating conversation - remember to get the customer talking.

Look for points of pain and build on them - if there's no pain it's hard to fix the problem properly.

Tip: Google their name before the meeting. Customers' ears prick up when they hear that you googled them.

The findings of the Spec Review (the Initial Release Plan) should be presented at a meeting with the key decision makers of the project for review and acceptance, generally in the form of a PowerPoint presentation. It is important that all the required people are in a room together to review the Initial Release Plan.

It is important to build a relationship of mutual respect with clients. A natural and simple way of doing this is through exchange of names. You introduce yourself and give them a card and in response they introduce themselves (giving details, including name and position, which you MUST ALWAYS remember).

For meetings with clients, aim for a ratio of 70% to 30% - that is, 70% of the time the customer should be talking. Remember the purpose of the meeting is to meet the client's needs. You can still convey your message to your clients by adding to what they have to say, rather than presenting a prepared speech to them.

It's important to ask probing questions and then listen to the answers.

When you are about to finish a client project, it is a good idea to prepare a "thank you" email, have it checked and send it to your customer (usually product owner) on the last day. In this email include:

Thank your product owner for the time and tell him the reason why you really enjoy your time on this project

Check to make sure you have completed all requirements

Prepare list of future improvements you can think of that can be done

There are a number of reasons why this is important:

It shows that you really care about your client/project

Give them something to think about. they might get you back to fix the problems you have identified.

Show him that you will be supporting him after the project ends (not disappearing forever)

Below is a template email you can use:​

Hi <ClientName>,

Thank you very much for your time for the last xxx weeks. I think you must be the best product owner I have worked with at SSW (always available for me when needed). I really enjoyed this little project.

I hope I have completed most (if not all) of your most important requirements. I had good look at the source code and while it's fresh in my mind, I thought I might send you the following suggestions that would make it easier for myself and other developers in future:

Improvement Area 1:1. Do this: because of this2. Do this: because of this

Improvement Area 2:1. Do this: because of this2. Do this: because of this......

​Here are the first things you should do EVERY time you come off client work:

Get a reference from the last client

It is a good way to check the client is happy

If your company is a Microsoft Gold Certified Partner, these references can lead to competencies such as Custom Development Solutions and ISV/Software Solution

An example of what to say to the client is: "We are a Microsoft Gold Certified Partner and I would like to submit a short description of the project to Microsoft, you will receive an email from Microsoft asking you to approve the reference. How does that sound?"

We would also love a testimonial to add to our website. Would you be happy to give a testimonial for the work we've done for you? Can you please email it to me?

If there is going to be further work down the line​, ask to pencil in a booking for say a month's time or so​, so that you don't get too booked out by other clients.

The next thing to do is to call your last few clients. You should always be in contact with them at least every 6 months

Before the call always prepare.

Refresh your memory about the company, project and contact before calling (have a look at their website; have a look at their competitors etc.)

Check the upcoming events (Check the calendar on the Home Page to see what's coming up)

Know the topic of the upcoming user group

Draft out some suggestions in an email (don't send yet)

Decide on what value-add opportunities you are going to offer them. Some examples:

A relevant and useful URL of an article

Mention something relevant to their project from a User Group presentation you saw

Maybe you can also invite them to a free Tech Breakfast

Maybe an upcoming User Group would be useful. It's a good place to have free training, and to build contacts and socialize (lots of IT managers and developers). Email the User Group link

Ask them about their website. See if any work needs to be done - Mention the need for maintenance

Call and chat to them about the work you did with them. Ask how everything's going, and if the application was successful

If yes - great, see what else you can do.

If not - then find out why (was it a technical issue, or the app not meeting the business needs) and offer to improve it. You can offer them a free consultation with one of our account managers.

Take some notes on what they liked about the solution.

Always ask if they know of some other projects we could help them with, or if they know of anybody that may need some software development gurus.

Send a follow up email

Send an " as per our conversation". Include some of your notes, a thank you for the time, and CC the Account Manager. If they were interested in a consultation, then ask the Account M​anager to follow up

Figure: Bad Example - By not stating what you have previously attempted to resolve the problem, the person you are seeking advice from may be wasting time if they suggest methods you have already done.

I have searched Google but no luck... How do you xxxx?

Figure: Good Example - The person you are seeking advice from will not suggest for you to do the same methods again and will look for other ways to resolve the issue.

It is essential that a company keeps a record of how much time its employees are spending on billable and non-billable work. This helps at invoicing time, and to make sure the clients see exactly where their time and money is being spent. One of the primary responsibilities as a developer is to complete timesheets. See Rules to better timesheets for more.

A common mistake for developers is to say "See you later, call me sometime next month".

On your last day of consulting with a client you should always book in the next date. Be aware of the main blockage people get, which the client is saying "How about I check by calendar and get back to you?". And often this never happens.

A better approach is to reduce the risk by:

saying that you are only pencilling it in and it can be cancelled, and

bringing some urgency (by saying your calendar fills up quick)

So try something like "My calendar fills up really quick, how about I pencil you in.... How about we say 2 weeks time? Don't forget you can cancel it anytime."

Figure: Plan ahead at the end of your day eg. "How about we pencil in my next visit, say 2 weeks time?"

Note: If, at the end of the day, work hasn't been fully tested, or is incomplete and you haven't been booked in for the next day, tell the Product Owner (PO) that issues may arise and further work is likely to be required. After the conversation, email the PO and CC your manager to confirm that further work is required.

E.g. "As per our conversation, this work has not yet been tested and may still include bugs. At this stage you would prefer if we did not continue work tomorrow, but I do recommend that we come in and finish soon."

It's often easy to lose track of what you're doing, especially if you have a busy day full of meetings and rushing around, it can often be easy to sign off and not think about tomorrow until you have to. But what if you're not coming in to the office the next day? You might be booked in to work at a client site first thing in the morning.

For this reason, it's a good idea to end each day by having a quick glance at your calendar. If you're especially busy, it can also be a good idea to have a paper printout of your week so you can look at your appointments in the car or on the move.

At times we have to work overtime on a project and the client is not charged for the total hours worked. When this occurs it is important to let the client know. If a client does not know, how can they be grateful? A happy client is achieved in small bite sized steps. Informing the client of overtime that is not charged is just one of those small steps.

People are not mind readers (unless they are telepathic!), so when you get good feedback from a client, make sure you get the recognition for it. There is nothing wrong with getting brownie points for the work you have done and making sure the boss at the client site and your manager know about it.

​

To:

John Smith - CEO Qwerty Organization

CC:

Adam Cogan - SSW Manager

From:

Sophie Belle - SSW Developer

Subject:

.NET Development Work for Qwerty Organization by SSW

John,

FYI - see next email. As you can see, I am loved :)

Regards,
Sophie Belle
www.ssw.com.au​

To:

Sophie Belle - SSW Developer

From:

Amanda Panda - Programmer / Analyst Qwerty Organization

Subject:

.NET Development Work for Qwerty Organization by SSW

Sophie,

Thanks for the latest release. It is fantastic! Thank you for all your hard work and commitment to helping implement this solution.

Regards,
Amanda Panda
Programmer / Analyst Qwerty Organization

Figure: Developers, when you get good feedback from anyone at the client's company, forward their comments onto the boss at the client's company and CC your manager

A sentence can be phrased in many ways. It is important to use positive language when speaking to clients. Instead of saying "I will NOT do X until you do Y", you can say "When you do Y, I will be happy to do X". ​

We will need your agreement on the mockup, and as soon as you are happy with it, we will develop it to the agreed mockup. We will not be able to change the mockup once made and you are happy with it.

Bad example

We will develop the report once you are happy with and have signed off the mockup.​​

​Having your clients as Instant Messenger contacts can improve your efficiency in project work. You can get a fast solution to road blocks and solve little problems quickly, as well as develop a better relationship!

Frequently when you are working on an ad-hoc basis or under tight deadlines managers or clients will "shoot from the hip" and ask for tasks without necessarily thinking much about them. Some of these tasks will be critical, some will be less so. It's important you don't waste time on unimportant tasks. There are plenty of important tasks to keep you busy!

If you think the task you have been given is going to take more than 2 hours, stop work, call the client and confirm they'd like you to keep going on that task. Sometimes the client will say keep going; sometimes they will say thanks for checking with them and ask you to work on something else.

If you can, don't wait until two hours is up before checking - check as soon as you realise it is likely to take more than two hours.

Figure: bad example: Don't keep working on a task until it's too late!

Figure: Good example: Calling the customer to tell them that "changing that function hyperlink is going to take more than 2 hours. Actually more like 2 days, do you want me to go ahead?"

Hi Ms. Emma, this is Alvin Shen from SSW. I am calling to follow up our meeting yesterday about your company website. Please return my call on 02 9953 3000. The best time to reach me is between 9 and 11am today, or between 3 and 5pm tomorrow. My number again is 02 9953 3000. Thank you.

Figure: Good Example - This communicates important contact details, a reason for calling and implies a response is needed in the next day or so

Confirm the voice message with an email.

There are several advantages leaving messages when your call is unanswered:

He/she may know who calls and be able to return your call.

If your message is urgent, he/she may return your call straight away (even though he/she is VERY busy.

​When someone brings to your attention that they are not happy with something, do you address the problem and not ignore it? For example, if your boss tells you they are unhappy that you do not have a release plan for the development you are working on, you should create a release plan right away. Do not ignore the problem as it will only escalate, fix it now!​

This is especially important if someone has followed you up. Try to get back to them as soon as possible with a response as it shows you care about what they care about.

​Problems come in endless contexts but here's how we deal with some specific examples:

​Related Rule​​​

When you call a client, always try a second time straight away. Sometimes they are not at the phone, sometimes there is a technical issue or some other reason, and you should try to call again to make sure you give the client enough time to pick up your call.

Clients come to us because of our experience and expertise as software consultants. Many of the problems faced by our clients we have seen, and solved, before. This means that, sometimes, the software consultants know best. But this is a delicate subject. You must be very competent to pull this card from your sleeve. It is easy to not only cause offence but also be plainly wrong. So before you speak make sure you've got the two fundamental aspects of this rule clearly sorted:

Knowing when you know best (and knowing when you don't)

Knowing how to persuade the client that your way is the best way (and knowing when you have failed)

Knowing when you know best

The expertise of a software consultant is likely to be in the technology underlying your clients business, not in their business model. If they're willing to pay for external consultants its highly likely their business model has been successful to date and it's wise that you leave that to them.

However, on some issues you should speak out firmly when you think the client is suggesting the wrong course of action. The following areas are most common:

Using old technology - eg SharePoint 2007 instead of SharePoint 2010

Wanting a non-scalable solution - this should speak for itself - the client is likely coming to you because their current solution has max'd out

Pushing for quick fixes when a better longer term fix is reasonable - eg hardcoding connection strings, using Boolean instead of Text when more options might arise down the track, fixing the size of text boxes instead of having them scale with the content.

Not thinking that UX matters

Trying to revert to a fixed price model when the agreement is time & materials

Knowing how to persuade the client that your way is the best way

If your client is not technically savvy you should be aware that an argument using technical language is unlikely to be persuasive. Argue your case using language that underscores your understanding of how your suggestion will improve their business, eg by future proofing the solution or allowing changes to be more easily implemented down the line.

As soon as you see the clients eyes glaze over, stop, it's likely you're bamboozling with techno-jargon. Rethink your argument and state it again.

If the point is arguable, once a client says no three times, don't push your luck too much. If you do concede don't forget to send an "as per our conversation" email to keep a record of the decision.

Sometimes a potential client contacts you and you are not the right person to deal with them. You need to hand them over to a sales person. There is usually no reason to call them and you can respond via email with:

A clear instruction for the sales person to follow up

One action item for the sales person to follow (more than one action item or asking the prospect to complete a task can cause confusion and delay

Being a good developer is not enough. There are multiple factors that can affect whether a project proceeds in a positive or a negative way. One factor that can have a significant impact on a project is the relationship between the developer and the client.

A great way of taking a small step each week is to do something on a more personal basis for the client.

Each week give some love to your client. "Client Love", as I have seen, varies a lot. Here are some things I have seen:

The developer notices that the topic of the upcoming SSW Tech Breakfast is appropriate and rings the client to offer them a free ticket.

The developer sends them a SMS on the weekend saying... "I was just thinking about your project and I think this might be a good idea?

The developer works back and gives a call on the way home to tell them what they did extra in their own time.

The developer sends an IM with a link to a web article that would interest them.

The developer buys the client their favourite coffee.

The developer talks and listens to the client about non work related things. People generally love talking about themselves and appreciate it when someone listens; most people don't take the time to listen. Here are some examples I have seen:

How was your weekend?

What are you doing this weekend?

General talking about their family / remembering the names of their family members.

General talking about their hobbies.

The tasks don't have to cost anything. Free tasks are more thoughtful and show the client you are thinking about them.

Tasks should be completed whilst on client work. Once client work is completed, the developer should move onto the Post Client Work rule.

Extra Reading: For some, the above comes naturally. For the rest of us, we highly recommend the book "How to Win Friends and Influence People" written by Dale Carnegie. It is an easy read, the principles are easy to implement and will not only change your client relationships but enhance all the relationships in your life for the better.

A client will always prefer to be told ahead of time if a piece of functionality is going to take longer than anticipated. It gives them more control of what is going on. The other opinion is landing them with an oversized invoice with no warning.

For this reason, blowouts should be reported in the Daily Scrum, as well as any major delays being told to the client as soon as possible, so that they don't get a big surpirse in the Sprint Review.

For big delays, it's best to tell the client as soon as the risk is identified to inform them of what's going on and ask "Do you want us to continue?".

$100k estimate. Calling the client when you reach $110k to say you have $20k to go.​

Bad Example: Not giving the client enough warning.

$100k estimate. Calling the client when you reach $80k to say you have $40k to go, and does he want to continue?

Good Example: Giving the client a warning ahead of time and asking for permission to continue.

Help and improve these rules

Nothing great is easy. The SSW rules are a great resource for developers all around the world.
However it’s hard to keep rules current and correct. If you spot a rule that is out of date, please email or if you are cool tweet me.