Woody asks some important questions that have straight foreword answers in the software for money domain. These answers come for the business side of a software development organization. It's the business of software that needs estimates. Given a choice no developer really wants to estimate her work. I never did, I just wanted to code. But once there is an understanding that my paycheck didn't come from the Bank of America, even thought that's what it said at the top (above TRW), then I slowly learned our customers paid of some value (in that first job a missile defense radar system) they needed to know how much it was going to cost to produce the needed capabilities.
So here's some good questions that have answers from the point of view of those paying for the cost to produce the software for the customer.
- Are you willing to give an estimate/price for free?
- The cost of sales is factored into the wrap rate for any firm intending on staying in business for long. The revenue earned from work needs to cover the cost of sales, plus all the overhead, indirects, fringe, benefits, and finally have some profit left over. Knowing the cost structure of the business is mandatory.
- So you can absorb that cost of sales indirectly in the wrap rate our you may be able to charge the customer for specific efforts if they are beyond the normal cost estimating process.
- In the end though, knowing your market and being competitive in that market means you know something about what things cost. If you decided to get into the SAP integration business or the flight avionics software business (two areas I know about), you'd better not only be able to deliver value, but know how much that value costs.
- Without knowing the costs of delivery the value, you can't know if you're competitive or worse know if you can stay in business.
- Knowing the cost structure of your business is mandatory for any business.
- Who pays for the estimates for jobs you don’t get?
- This is called cost of sales. It's a cost carried on the books as an expense.
- It's the cost of doing business.
- When I see free estimates for your local house painter, I'm reminded of our daughter (now an adult in the work force) coming home from her high school economics class - which we insisted she take - saying Dad today we learned there is no such thing as free.
- This question is answered simply by taking that high school economics class.. Some one has to pay. It's almost always the customer.
- How much extra do you need to “pad” the work for the ”unknowns”? Why should your customer pay for that?
- This is called risk margin. Someone has to pay to cover the risk.
- If someone doesn't pay, you'll be out of business. Look at your contract. Don't know what to look for, better get someone on board who does. A business development person is a good start, if your the techie.
- Depends on how well the problem is stated. Risk goes up the less anyone knows what done looks like.
- This is a natural for agile development. A phased approach where a discovery phase is budgeted to find out the next level of detail for the cost of the project.
- The government does this through its 5000.02 acquisition strategy. IT shops do this. It's the standard thing to do.
- If the customer is unsure of what capabilities are needed, then the risk is higher, and the discovery phase more important.
- Are you going to give a range?: “It will cost you no less than this but no more than that”. Will you guarantee that?
- Of course you are. That's the basis of an estimate. Most Likely and a range around that ML value.
- No point estimate is credible without an estimate range.
- This can be arrived at through a wide variety of means. Too wide for this blog.
- But without the range and the shape of the curve for that range, no estimate can be credible.
- If the customer is asking for a guarantee, this is likley to get ugly real fast when the customer asks for that. Act appropriately. Have a lawyer write your contract. Start with a work for hire paradigm.
- If it costs you more to make the software than you estimated, are you willing to take the loss? Why??? If not, how will you deal with that? Re-negotiate the contract?
- Read your terms and conditions.
- Is this a time and materials contract?
- Is there a Statement of Work?
- Is there a list of deliverables? Do these deliverables have units of measure defining there acceptance?
- Act like a business person, the technical stuff comes next.
- You're in the business of writing software for money, behave appropriately.
- How do you know enough about the work to be able to give a reasonably accurate price/estimate?
- You're entering into a competitive environment. Or you've been assigned a job internally you may not know about. This is the time to start learning, rather than exploring. It's time to start being a good steward of your customers money.
- Reference class forecasting is one place to start.
- There are many tools that will help, here's a list.
- Estimating software costs is a very mature domain. Don't believe for a minute that it can't be done. Don't believe for a minute that you can't estimate nearly anything. If it is knowable and you have the means of knowing, you can make an estimate.
- If a competitor shows them a better way, will they ever come back to you again?
- This is a trick question. What does better way mean.
- A fundamental axiom of business is you can't know the value of something until you know its cost.
- Without this understanding your customer is likely not a good customer.
- Business, like poker, is not about winning, it's about not losing.
- Let the other guy lose money on the better way - if there is such a thing. Then learn from that to be better yourself.
- But the better way argument needs actual suggestions, not some open ended pie in the sky, chasing unicorns approach to running your business. Unless of course you're in the business of breeding and selling unicorns ;>)
So some further questions?
- Do you expect to make a living writing software for money as a provider or consultant? Then you'd better know something about your cost structure. How much do you need to make to eat? What rate can the market absorb for your services? What is your unfair competitive advantage? What is that worth in the market?
- What does the market place want to buy? What are they willing to pay? Who is providing that now and at what rate?
- Who is your competition? Are they expanding? For what reason? Cheaper, faster, better?
- How will you position yourself against them? Price, experience, faster?
Knowing what it costs to produce a specific value is a critical success factor in any business. Writing software for money is no different.