Rules

Secret ingredients to quality software

Do you manage clients' expectations?

Last updated by Tiago Araújo [SSW] on 25 Jun 2021 01:24 am (about 1 month ago) See History

"Software development can be painful and costly." Hang on, that should say: "Software development is painful and costly."

There's no doubt custom software development is a challenging industry. According to Critical Success Factors In Software Projects by John S. Reel: Nearly 75% of all development projects missed their target release date or never ship at all.

But what is so interesting is that at least 7 of the 10 most common signs of product development failure are present before the design is created or a single line of code is written.

Projects often fail because clients think suppliers under-deliver and over-charge. The client and the supplier have different expectations about the goals of the project. This difference of opinion often leads to a project's absolute failure.

fail image

A) Don't give ranges!

Let's say a prospect asks me "How much to do this Release?" I could say "Somewhere between $15k - $20k"... then I hear "20k", the prospect hears "15k". I'm pleased we got it done for "25k" with a whole bunch of changes, the client is annoyed we didn't get it done for "12k". So, never give a range to a client. Tell them something like "The first Release, along with its spec, is likely to take $35k. That's two guys working full time for two weeks."

B) Be upfront about bugs

There is no such thing as bugless software. It's important to admit that bugs will happen. Bugs will get through testing, and bugs will cause a headache in production. In a fixed price agreement we cover bugs, because the goal posts are stuck in the ground, but in hourly-rate work, bugs are covered by the client. See what is covered in fixed price contracts for more information in relation to what is and what is not a bug.

C) Don't give fixed prices

A big fixed-price contract can also be dangerous in managing expectations because it removes flexibility. If you deliver exactly what the spec says, the client can quite easily be unhappy, because the hundred and one things they thought of during development weren't included.

If you need to go with fixed prices, we recommend to do it in Releases of no more than 2 weeks (1 - 2 releases), which helps alleviate this problem.

It will often occur that in the middle of a fixed price contract a client will ask you to add extra functionality. You should not do any such items straight away, but turn this request into a task for future development. You should generate another release plan for all the extra items once the fixed price contract has been signed off. It is important that the customer is always clear on what is part of a fixed price contract and what is not, that is why you should always finish a fixed price contract and have it signed off before starting extra work.

D) Talk dollars ASAP

Talking dollars with the client is often something consultants don't like doing after the initial meeting. I've heard of consultants refraining from sending invoices when a project is suffering a few delays, or the client is unhappy with the application state.

If the client is unhappy to receive an invoice now, they will not be happy to receive it in two months!

Send invoices for time and material projects every week. This way the client is informed of costs every week, and if a hassle arises, it's trapped straight away.

E) Be transparent about rates and resourcing

Defining the hourly rates and resources that will be available to clients ensures they are not surprised later. Additionally, explaining the differences between resources makes it clear why specific resources are grouped together and what kind of services they provide. At SSW, we have clear definitions for all of our roles so that clients understand the part their resources play.

Adam CoganAdam Cogan

We open source. This page is on GitHub