In the consideration of charging customers for custom software you are writing for them there are different terms here that sometimes get used interchangeably. I’m going to define them for this article as two very distinct and separate things and will do so in terms of the developer:
- Cost – I am talking about the costs to produce the software you are writing. This is developer based. It’s my time and materials. It’s what I’m actually spending to produce the software output. Time is the number of hours I put in and materials is what tools I buy to do the work, training I need, reference materials, etc., etc.
- Price – I am talking here about what I am going to ask the customer to pay. This may be a set price, or a variable price depending on other factors like my time and materials plus a margin, or my time and materials plus margin capped at some limit.
I think it’s worth noting that determining your own cost to build software in hours (if you are doing the developing anyway) is appropriate, but that’s not the first thing you want to determine.
In terms of setting a price for customers for a custom software project, it is most appropriate to think of pricing in terms of the value they personally are receiving. (Pricing for the same product you are selling to many people like a book or video training or Access add in is a different scenario)
In a value pricing scenario you want to first understand your customer’s needs. The thing they truly desire. Their true desire is NOT you spending time doing something, or even the software you ultimately make for them. They aren’t sitting around thinking, “Oh boy, I can’t wait for Jon to spend 40 hours of his time on something for me.” or “I’m so looking forward to having a new form in my Access database.” It’s actually something else and you have to dig down in conversation with them to find it. Often it’s not something they are consciously aware of, but they have a gut feeling of how much it is worth to them. They won’t be able to articulate that value to you, you need to find it, and this should be the bulk of your conversation with them. It might be something like, “I can’t wait for my employees to stop picking their noses waiting for the blue circle of death to finish and the form to be ready” or “I’m looking forward to automating this process so that I won’t have to stress about whether it’s being done the same way each time and inconsistent results”. Once you feel you have an understanding of what they truly want you can guess a ballpark value in a range like hundreds, thousands, and just keep adding zeroes. (This only really works properly if you are thinking and talking to the person who is actually paying for the work).
Now that you have a ballpark idea of how much you think they value the outcome, divide it by ten. Let’s say I have an understanding that the customer wants a process to be reliable and consistent and I believe that they value that at $5,000. Ok, I divide that by 10 and get $500. The reason I do this is because the customer will not want to pay over what they value the results, and we suck at estimating, so I’m likely wrong. Assuming I got the magnitude right, reducing the magnitude of the price by 1 (dividing by ten) will make sure I am at a price they are highly likely to agree to.
Ok, so far I haven’t even gotten to the point of considering my time and materials, but that’s next.
So, to move the needle they want to move, can I do so for $500? What am I willing to do for the customer that will move their needle for that amount? Now I craft some solutions. Maybe I start with $500 and get something really basic to move the needle a little bit. As I’m brainstorming, I may come up with options that are more costly to me, but I can propose them as solutions. Typically, proposing three potential solutions of increasing price will allow the customer to feel like they have options without being overwhelmed. So maybe I think up other things I can do instead to move the needle that I would be willing to do for $1500 and $2500. I could produce a proposal with those three options. It ends up being a win-win for everyone.