Fit For Purpose
I was frustrated by an off-hand comment a colleague made today about a customer wanting to spend the least that they could to solve a problem; "they're entitled to want spend the least amount they can to solve their problem".
I find this kind of approach to solving business problems disingenuous.
I also drives me crazy when I hear customers say this, "Look, we don't need the Rolls Royce version, we just need the Commodore version, just enough to get us on the road."
Again, this analogy fails to capture the need to ensure that the solution is fit-for-purpose. Sure, we can get the customer on the road, but if they're intending to take that ordinary sedan into the outback they're going to find themselves severely wanting.
Time and time again, I find myself rallying against my colleagues (and unfortunately my customers) determined to make them see that the choice they're making is not fit-for-purpose and will fall short of their expectations.
I appreciate the tension that exists between the budget a customer has and their highest expectations. I expect that customers are already compromising before they come to us for solutions. But I often fail to reconcile two things; why they often never tell us what their highest expectations are, and why they think they can get away with a cheap solution.
Consulting is not an easy business, in particular I find the implicit subservience unnerving. You can overcome this by committing to engage your customer as closely and regularly as you can. If your customer is disengaged from the software your developing for them, a disconnect can occur between the problems they experience in their business, the problems you perceive that exist in their business, the solutions you're working on and the solutions that the customer imagines you're working on.
If you commit to an ongoing dialogue about their intent, you'll soon know if you're building something that is fit-for-purpose, and they'll know if they're asking for something that isn't. You're also going to find yourself in a equitable relationship with your customer, hopefully avoiding the master and slave scenario we all dread.
What this takes though, is trust and honesty from both parties...plus a touch of courage and a dash of care on our part as developers.