Rules to Better Software Consultants - Dealing with Clients - 53 Rules
Being a software consultant involves more than just coding. How you manage and communicate with your clients is vital to your success.
The other half of being the best consultant possible can be found at Rules to Better Software Consultants - Working in a Team.
The 3 A's for being a good consultant:
- Having Ability
- Being Affable
- Being Available
Being available may be hard sometimes, but it doesn't mean right away. As long as you can give a deadline and do it customers will be happy.
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!
If you have followed the previous rule and the ball is always in their court, you need to make sure that they keep playing.
The best way to do this is to make sure you follow up all communications that require a reply, whenever you feel that a bottleneck is forming.
The best ways to follow up a client are:
If there is no response, find the original email and resend.
See our Rules To Better Email
- Use IM or Skype
See our Rules To Better Instant Messenger
- Use the phone
Tip: You can use FollowUpThen.com for your follow up emails.
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 Cone of Uncertainty to see the range of cost change at different stages through a project:
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 agile 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.
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
With the convenience and cost-effectiveness of e-mail, it is tempting to resort to emails for too much client contact. Don't forget that clients are people too, and they need human interaction to ensure everything is OK. So it is essential that you maintain verbal contact before, during and after a project. What are examples of ongoing project contact?
- Set the expectations early. Let the client know what to expect in terms of communication. For example:
::: greybox"Hi Bill,We will run your project using Scrum. Expect emails and phone calls that we need responses to. These are examples:
- The first step - we willagree on a Sprint Plan at the beginning of each sprint.
- Every morning - expect a Daily Scrum meeting or video call with a list of tasks the developers will be working on that day
- Every time a task is done - you will get an email with information about what was done, often with screen shots and code snippets :::
Avoid going more than 3 days without a phone call to your client.
- New Resources - If you are put onto an existing project, it is good practice to call the client and introduce yourself. For example:
::: greybox"Hi, I'm Andrew. I'll be taking over from Mark on your project. Mark has filled me in on the specifics and I'm keen to get involved.":::
If you use the phone instead of email when it is appropriate, you maintain an open channel of verbal communication with your client. This helps to break down communication barriers, lets the client know that you are friendly and involved, and makes them feel confident in your ability to deliver the project.
There are two fundamental ways any consultant can bill clients:
Time and Materials
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 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.
- Development is conducted off-site (to prevent unauthorised scope-development)
- 50% of the fixed price is payable before work commences, the balance is payable at the delivery of the first external test please
- There is a 30 day warranty on bugs which commences when the first external test please is issued
- The following release cannot commence until the prior release is signed-off.
When working on a Time and Materials basis there are two different management arrangements depending on what the client requires.
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 you to manage project elements such as time, scope, quality, and cost.
This approach can be useful for problems where time or effort is not immediately known and not possible to estimate with the information at hand. The types of work this may include would be support jobs or investigatory work.
There should be an agreement of the time allowed to be spent ahead of time, even if what is being worked on has no scope.
B. Managed Work (using Scrum, the Client is agreeing to an outcome that the consulting company controls)
The alternative is to work with a Scrum Master, or a Project Manager, with specification, and Sprint plans. In this approach, management is applied to provide control and additional communication and controls of 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.In this approach, backlog items are created during the Spec Review process while creating the project estimates, which can be used to create the sprints.
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 lost Print "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.
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.
You can see the best way to book yourself in using the CRM Service Calendar here: http://rules.ssw.com.au/Communication/RulesToBetterCRMForUsers/Pages/How-to-book-developers-for-a-project.aspx
Is your price:
- $100 per hour + GST (the $100 being the amount exclusive of GST)
- $110 per hour (the $110 being the total amount)
We say the first one. When providing quotes to prospects/clients, it is always better to display the net value + 10% GST rather than the total.
The reasons for this are:
- It avoids any confusion as to whether GST is included.
- This net amount is the REAL cost to the customer, as they get the tax back (in Australia).
- The net value is lower and appears more attractive to the client.
- The 10% GST charged to the client is not income for your company. In Australia, we collect this 10% on behalf of the Australian Taxation Office.
The client will receive back this 10% GST from the Australian Tax Office when they do their quarterly BAS/GST Return.
The total fixed price total is $AUD 66,000 - please find quote attached. Bad Example The total fixed price total is $AUD 60,000 + GST (10%). Please find quote attached. Good Example
Note #1 : SSW and other Australian companies do not charge GST to external clients outside of Australia.
Note #2 : This only applies for business to business transactions. When selling goods or services to individuals for domestic or personal use in Australia, prices must be quoted inclusive of GST as per the Competition and Consumer Act 2010.
While you are writing out a quote, make sure you know when to use a round or exact figure.
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..."
Figure: Good example - Making sure you won't work for free
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.
Meetings are an area some clients think will be free, so always mention it.
As stated in SSW's Terms and Conditions:
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.
There is often a bit of confusion about what constitutes a brief proposal and what constitutes a specification review.
Brief proposal - free:
- Information about your company
- A basic overview of what you'll do for them
- The next steps
Specification Review - billed:
- A technical document listing in detail what technologies will be used and how
- Most likely includes initial release plans and ballparks
At the end of a Spec Review, when you've finally finished all your documentation, it can be tempting to chuck it in an email to the client and call it a day... but you need to remember that you're now at the most important part of the process... and this is the key part to make sure you get right!
The findings of the Spec Review (architecture and estimates) should always be presented at a meeting (or a Teams meeting) with the key decision makers of the project for review and acceptance, generally in the form of a PowerPoint presentation, or a Word doc. It is important that all the required people are in a room together to review the findings.
It is essential to clarify the purpose and time of meetings.When you commence each meeting you should ask the following two questions:
- What are the points you want to cover in this meeting?
- How long will this meeting be?
By asking these two questions you define both the client's and your expectations from the meeting; eliminating one of the factors which contribute to time-wastage.
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.Client: We had a problem in ChinaYou: What was the problem? Figure: Good Example
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 the Product Owner) on the last day. In this email include:
- Make sure you have completed all requirements
- Thank for the time and tell them the reasons why you enjoyed working on this project
- Prepare a 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 care about your client/project
- Give them something to think about. They might get you back to fix the problems you have identified
- Show that you will be supporting them after the project ends
Below is a template email you can use:
To: Bob Northwind Cc: [Account Manager] Subject: [Project Name] - Thank you
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 project.
I believe I have completed 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:
- Do this: because of this
- Do this: because of this
Improvement Area 2:
- Do this: because of this
- Do this: because of this ... ...
Please feel free to contact us if you have any questions.
Figure: Good Example - Nice 'thank you' email with a list of future improvements
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 Manager to follow up
When you seek advice or help from another, firstly, you need to establish with them:
- Your understanding and,
- Methods you have previously attempted in order to resolve the problem
Tip: Be aware that you don't want them to reply with http://www.lmgtfy.com
or the bing version http://letmebingthatforyou.com :-)How do you xxxx? 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. Another rule that closely links to this can be found in RulestoBetterInstantMessenger.aspx
Some tasks are either time-critical or you give a promise to do them promptly. It's very important that these tasks are given a high priority.
If you're not going to be able to deliver a task on-time, you should let the appropriate people know right away.
You could use your Inbox as a priority list by sending yourself email with an estimate and the priority. Also you are supposed CC other who you think should know about this, so that they could give you some advice and know what is going on here. (Link: do-you-send-yourself-emails)
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 on the next date. Be aware of the main blockage people get, which the client is saying "How about I check my 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 penciling it in and it can be canceled, 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."
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 to 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.
On occasion, you may be asked in the morning or even halfway through the day, to pause your work by the client.
- Developer X shows up in the morning and starts working on feature Y as per CRM Service Calendar
- Client calls and says “We’re sorry but we have to pause the development of feature Y because XYZ”
The reaction from Developer X should be:
“OK, I will call my Account Manager and make sure future bookings are cancelled until further notice. For today, is there anything else I can work on so you get the best value out of the rest of my day?”
Note: Same-day cancellations still incur that day's costs. If there is nothing more you can work on, and the client is unhappy, refer the client to your Account Manager.
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.
From: Sophie Belle - SSW Developer To: John Smith - CEO Qwerty Organization Cc: Adam Cogan - SSW Manager Subject: FW: .NET Development Work for Qwerty Organization by SSW
FYI - see the email below. As you can see, I am loved :)
To: Sophie Belle - SSW Developer
From: Amanda Panda - Qwerty Organization
Subject: .NET Development Work for Qwerty Organization by SSW
Thanks for the latest release.
It is fantastic! Thank you for all your hard work and commitment to helping implement this solution.
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
It’s not good enough just to do good work. You’ve gotta do good work and be visible.
- Adam Cogan
Assuming you are an awesome worker, there are a whole bunch of smaller ways of getting brownie points and they are all around good communication:
- Doing or sending a Daily Scrum
- Sending a "To myself" after taking requirements from a client
- Sending a Done with a screenshot after you have completed the task
- Doing a Done Video
- Preparing and doing a great Sprint Review and sending an email
- Sending an invoice with plenty of comments
- Sharing your knowledge at a user group or presentation
- Recording or live-streaming your user group presentation and uploading it to Youtube
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.
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!
Of course any important chats should be confirmed via email.
I find having my clients available on Skype is extremely useful. Are you on Skype? If so, can I please add you as a contact? I'll add the above email address, let me know if you use a different one.
Cheers Ulysses Maclaren
Figure: It's easy to get your clients on IM, you only have to ask!
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?"
If you call a client or team member, and for some reason they do not attend your call, then leave a message to ensure a response.
The advantages of leaving messages when your call is unanswered:
- They will know who called and be able to return your call
- If your message is urgent, they may return your call straight away (even though they're busy)
Your messages must contain:
- Your first name and last name
- Purpose of calling
- Your contact number
Create a sense of urgency by giving them explicit time frames when you are available.
"Hi Ms. Emma, this is Alvin. Please call me back, thanks."
Figure: Bad Example - lacking in communication details, reason for calling and sense of urgency
"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
You may want to confirm the voice message with an email.
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.
This also applies to communicating with people internally about issues that relate to:
- Account or payment issues
- Unhappiness with your company generally
- Pausing work or ceasing development for any unexplained reason
You should alert your management ASAP.If you are not able to fix the problem immediately, you need to inform the clients the next booked in date.
Problems come in endless contexts but here's how we deal with some specific examples:
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.
Start the day on a good foot by asking:
- The plan today is XXX?
- What do you want to cover today?
- What do you already know?
- Do you want lectures/Hands on labs/mixture?
When working on an hourly basis, you can confuse clients when sometimes you try to talk about a few hours here and a few hours here or there.
Simply things and just give them these 3 numbers:
$ Billed to date __$xx__(accurate on Tuesday) Burndown Days Remaining __8__ Calendar Days Booked __4days x 2__ Next meeting (for Review and Retro)
Hi Andrew,Please find the Burndown report below. I have looked at a few tasks with Zune and re-estimated them.
- Product owner:Andrew
- Scrum master:Paul
- Team:Mark L,Zune,Tristan,Trevor
- $ Billed to date:$20,000
- Days remaining:(around 50 hours based on chart below)=7+days
Days booked in are 4 days x 2
- ML and ZV - Mon 5th
- ML and ZV - Tue 6th
- ML and ZV - Mon 12th
- ML and ZV - Tue 13th
Only the 14th we will
- Move any remaining tasks to Sprint 4
- Have a Review Meeting (show and tell) at 10am – 2 hours
- Have a Retrospective Meeting at 12 noon – 2 hours
Have a Planning Meeting at 2pm
Please let us know if you have any questions or concerns.
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.
Over the course of work on a project, there will likely be many little disagreements, and most can be captured in "as per our conversation" emails. Sometimes the differences of opinion relate to architectural issues or things that will be hard to change later. A lot of developers are on the quiet, introverted side, but vocal developers make their stance clear. Even that can be hard with some clients who have super strong voices and some clients are not great listeners.
Regardless it is important to document disagreements so the client is crystal clear and a stronger version of ‘as per our conversation’ is to include the words ‘for the record’. Too often developers say they disagree but months later, the client may say:
“No I don’t recall you disagreed, I thought I gave counter arguments and then I assumed you had agreed with me.”
One war story
"One day we had an incident where one of our clients had found out that a developer had hard-coded the CSS (the default Angular way). When the client discovered it, they were wild and wanted 24 days written off as a consequence. To be clear, the reaction and the request were disproportionate. However, clients have memories that are fallible and they can be entitled to be upset when they come to a company (like SSW) that prides themselves on following best-practices.
I spoke to the developer about it, and he knew 100% that he had agreed with the Product Owner to leave it that way because it was super quick and they had bigger fish to fry at the time. The developer recalled explaining to the Product Owner that he wasn't comfortable taking that shortcut. The step that the developer failed to do was to cover his ass with an "As per our conversation" email... or when the disagreement is related to architectural issues (or issues that will require a lot of rework later) I suggest a more clear "For the record" email.
Note: Even better the developer could have included a URL in the email with a link to a PBI to remove this technical debt later."
SSW Chief Architect
When you have a disagreement with someone who has decision making power, and you are unable to convince them that your recommendation is correct (and they were unable to convince you that their decision is correct), you should send an email to the people involved including your thoughts, because:
- Later down the track it will provide a learning experience for someone (depending on who was right 😉) Tip: Use a follow up then set for e.g. 6 months in the future to remind you to revisit your email, then take the opportunity to follow up on it with a retrospective analysing the decision that was made and what the outcome was (no matter who was right, it shows you were invested enough in the issue to keep track of it)
- After cooling down from the meeting, people might read it later and see it as useful input
Note : A "For the record" email should be reserved for a significant architectural decision, etc. that will be difficult or costly to change later. You should consider it a level above an "As per our conversation" email, which is better suited for more minor decisions.
(...6 months later)
"I knew it, we should never have used React for the Northwind project."
Figure: Bad example - Being improductive and too late
(...on the day)
"Thanks for the chat today. As per our conversation, you'd like us to build this feature using a quick workaround. Just for the record, the best practice would have been to XXX, but since you are the Product Owner, and I understand we're under time pressure, I of course will go with your decision."
Figure: Good example - Documenting that client has asked you to do a shortcut
(...on the day)
"Thanks for the chat today. For the record, you have requested that we proceed with developing the Northwind Project in React, whereas we have recommended using Angular for the following reasons:
- Reason for Angular over React 1 (https://link),
- Reason for Angular over React 2 (https://link),
- Reason for Angular over React 3 (https://link).
That said, you are the Product Owner and have final say in the matter, so we will proceed with React as per your decision."
Figure: Good example - You have politely pointed out they are making a poor technology choice and given empirical evidence.
Note: it's also a good email to have in your back pocket in case the client complains about slow progress in a few months time.
(...6 months later - the curious retrospective)
"I just got reminded about this email from 6 months ago, in the spirit of doing retrospectives to learn, thanks for taking my call about it.
As per our conversation, we are both happy that the React solution has panned out and there has been some benefits that we didn't think of at the time such as hiring a couple of cool React developers. We agreed that we could have saved some money with Angular, but we don't regret the decision."
Figure: Good example – 6 month retrospective to analyse the pros and cons of a past decision.
Tread carefully with a follow up email - use your discretion to avoid souring a relationship by unnecessarily rubbing their face in it.Mention the words "For the record," so that you can find it more easily in the future with a search, but avoid starting with it because it can sound a bit harsh.
Make sure you CC your account manager and any other relevant parties so that they can keep informed of the situation.
Make it clear that your advice is purely technical in nature and not business or legal advice. Consider putting the words "The above is not legal advice." at the end of your email.
This is also a good thing to do if you have an ethical problem with a task.
Take some time to complete this "'For the record' emails" survey.
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
If you interrupt someone when they are in the zone, it can take them 15 minutes to get back into the zone.
Instead of interrupting someone directly, you can:
- Send them an email to contact you when free (preferred option)
- Ping them on Microsoft Teams or Skype with the message “See me when you are free”
Check the rule Do you deal with distractions?
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. See Rules to Successful Sales Account Management
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?".
Calling the client when you reach $110k to say you have $20k to go.
Bad Example: Not giving the client enough warning
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
Imagine this… a client calls you in a panic when you are working at another client. You need to login to their DevOps portal to see the problem and so you sign out of your current clients DevOps portal …wait… wait… get a 2 factor SMS… wait… and then finally get in! But then you notice it also knocked you out of the Azure Portal and your Office 365 email that you were previously signed into. Annoying!
- Never log out
- Never use Incognito (where you need to login)
- Install your cool extensions in each of your Chrome Profiles
Consultants usually work on different client projects and use different client credentials eg. Azure DevOps, Azure Portal and sometimes an email account with the client’s branding. Password managers are great, but going from client to client you have to continually switch between accounts by logging out and logging in with different credentials.
Q: Is this only for developers?A: No, my PA uses this (in her case, her "client" is Adam 😉)
Many people have an Office 365 account, and a personal Office 365 account. If you want to avoid keeping logging in and out to switch between them, try setting up a separate "person profile" for each in chrome.
Make use of Chrome Profiles to separate your bookmarks, history, passwords and other browser settings for different clients and that means that the frequent log out and log in overhead is eliminated. Simply switch to a client specific Chrome Profile and all the credentials are automatically restored.
- Open your Chrome browser
- Click on you profile button
- Select Manage People to create a new person/profile
- Click Add Person
- Fill in the person/client name and select an icon
- Open your Chrome browser
- Click on you profile button
- Select the person/profile you want to switch to
Please have a look at https://support.google.com/chrome/answer/2364824
CC the client from the beginning (unless it’s obvious internal communication). This allows the client to see progress towards speaking with the right person and also gives them an opportunity to correct any details we might have got wrong.
Often, when a manager is called in to help out with a conflict situation, they don’t have all the context or details, so backchannels can help to fill the gap.
Prior backchannels - Have an "off the record" conversation with your manager or teammate before a client meeting. If your manager has no idea about an issue, when they’re put on the spot in a meeting, they then have to interrogate regarding processes followed, etc. It’s better to have them prepared before they go in. One way to do this is by asking good questions – see the video on how to ask good questions below.
Live backchannels - Assist in real-time with relevant information in an alternative private channel e.g. SMS or Teams. This can help the conversation flow and help to verify what is being said, and limits the need for phrases such as, “William, is that true?”
**Post backchannels ** – Debrief your manager or teammate how the call or situation was handled, outcomes, where it is at now, next steps, etc.
In general, use Teams for private information, or SMS as a last resort. Treat sensitive information or scenarios with care to ensure a good outcome for all parties.
Client: "I told them we’d need blah" Manager: "Oh that does sound reasonable. Devs, why was that missed?"
Figure: Bad Example: Manager looks uninformed and is always on the back foot, and needing to ask questions that everyone else in the call on both sides already knows
Client: "I told them we’d need blah." Dev (on a private channel with Manager): "That’s true, but it only came up after the 1st sprint was already done." Manager: "My understanding was that was only asked for after the 1st sprint."
Figure: Good Example: Manager is armed with relevant information as needed
Dev: "Heads up, they might be sensitive about this part as they have been very clear with us about it from the start and I missed it. This part was really my fault."
Figure: Good Example: Let the Manager know what parts are reasonable to push, and what battles are better surrendered
An important part of communication is to improve the Product Owner's understanding of ROI and help them make good decisions. When you are actioning a task, it's crucial to value your time and think about how much manual time it may consume over a longer period, say a year. You can then go the extra step and quantify this $ cost.
If you find out that another solution would be better, then you should clearly communicate that to the Product Owner.
In the software world to calculate ROI we take a PBI and do Business Value ÷ Effort
If the Product Owner still disagrees with you then it may be a good idea to send a 'For the record' email.
From: Piers To: Bob Northwind Subject: Email signature - not working
Figure: Bad Example - ROI was not mentioned
From: Piers To: Bob Northwind Subject: Email signature - not working
Done - I have fixed the email signature by changing the file server's HTML and it took me 1 hour.
ROI Consideration - As per our conversation, I have to make these changes every month for 12 users. Therefore, for future changes to email signatures, let's wait until I implement the new 3rd party solution I am working on. This will give better ROI because I won't need to do any further wasted work.
Figure: OK Example - ROI is mentioned
From: Piers To: Bob Northwind Subject: Email signature - not working
Done - I have fixed the email signature by changing the file server's HTML and it took me 1 hour.
...but I will have to do it for each of our 12 users once a month.
Option A - Continue manually adding each email signature, every month.
- Maintenance: SysAdmin x 12 hours x $200/hr = $2,400 per month
- Total cost = $28,800 per year
Option B (recommended) - Purchase and configure an email signature system.
- Configure: SysAdmin x 16 hours x $200/hr = $3,200 flat fee
- License: 1 License fee x $2,000 = $2,000 flat fee
- Total cost = $5,200 flat fee
Figure: Good Example - ROI is mentioned and quantified
Note: If fixing the email signatures had been a huge task then it would have been better for Piers to have a conversation with Bob before he implemented the fix.
The impulse to win an argument and prove that you are right can be a strong driving force, but it goes without saying that it should not take priority over keeping a good client.
In the software world, a common point of difference is about the architecture of a proposed solution. The preferred approach is usually to implement an architecture that is "future proofed", so that future changes a client wants are easier to implement. It's the same as a builder saying "I should rough in some plumbing in this area now because it will make it cheaper to install an ensuite in the future." It will always cost a little more to plan for the future, but it will save money, and time, in the long run.
If you're unable to persuade a client to take your preferred approach, it's important to show empathy and demonstrate that you understand your client's point of view...or at are least trying to :)
If the situation escalates and the client is genuinely upset, make sure you start any reply with something like "I understand your frustration". At this point in time, you want to aim for a compromise, where each party meets the other, somewhere in the middle.
The operation was a complete success but the patient died...
Figure: Don't be righteous
While not being able to persuade the client can be frustrating, understand there are 3 common reasons why 2 reasonable people don’t agree on a point:
- You haven’t explained your point well enough. e.g. you haven’t given them all the information
- You don’t understand the full context for their decision. e.g. they haven’t given you all the information
- One party is not able to process the extra information e.g. they may be emotionally invested
If it’s something you care a lot about then give the client some space and try again later, making sure you ask questions about their needs in the meantime. If the client feels like you are listening to their concerns sincerely you are more likely to be able to persuade them of your approach. For example, send a 1 week follow up to yourself to have another discussion to try and explain your point again, this time touching different points. During this 2nd conversation, you might be able to get more information from them to understand their point.
If after this, you still can’t agree, then go with what the client wants...if it's really important then send a gently worded email For the Record to document your opinion and make sure it is clear that you didn't agree with them.