As part of the Architecture definition for a project I’m working on, I have been preparing a cost estimate. The idea is that the client wants to know if they need to tender the project out to third parties, or whether it can be developed in house by the shared central IT department, used by several business units.
In a meeting with the client today I presented my initial estimates.
Me: "So as you can see, the upper cost will be 820 thousand CHF."
Business Unit Project Manager: "Hold it there. You do realise there is a cost threshold at 600 thousand right?! Above that, we have to tender the project out, and that will add a delay of two months!"
Me: "Sure. In the pre study, there is a project plan showing that an initial estimate places the work at around a million CHF. And in that study, it allows time for the tendering process. But good news, it shouldn’t cost as much as a million…"
Business Unit Project Manager: "Can’t you somehow reduce the costs? You need to bring it down a little more…We are already running late."
At this point, my unprofessional answer (which I managed to hold in) was along the lines of "OK. Instead of me wasting my time doing a real estimate, just tell me how much you want it to cost, or rather how much less you want it to cost than your boss already thinks it will, based on the pre study. That way, I save time, and you look good when you tell your boss how little its going to cost… I mean what’s the real point in doing an estimate anyway? All projects run over anyway right?"
Instead, my colleage interrupted: Colleague: "But if we give a low estimate, and the project runs over, then we will be to blame… And who will pay for the extra development?"
Business Unit Project Manager: "Not at all. Once they spent that money, it will be easier to get more funds. Then we can also do all this extra stuff I want to do because it would look really cool (even though the Customer has spent the last three meetings telling me it will not benefit the business at all). The important thing is to keep the cost to below 600 thousand."
Colleague: "Erm… no."
OK, I admit, the project manager isn’t doing anything any other business representative wouldn’t also do. But that’s the problem. Have you ever had work done on your house? Bet you asked for a fixed price quote? And if the work wasn’t done, you threatened to start legal proceedings, and magically the work gets completed? The reason is individual people don’t want to spend all their hard earned cash in an unpredictable manner. So contracts ensure they don’t get screwed. In fact, fixed price contracts between companies for software development always include clauses stating that over runs are at the cost of the developer. Erm, that’s why they are fixed price… So why does this guy think it’s different when he is getting an internal shared service department to do the development? Is he magically somehow not spending real money?
So the point is like I’ve stated before. If you want to do an honest job and one that will benefit the company paying your bills, spend a little time thinking about the real costs involved in software. If you were paying the bill, would you tolerate what’s going on? That’s how to do a good estimate. Imagine first that you are doing the development fixed price. Would the estimate cover your costs? Then look at it from the business point of view. If it were your money paying for it, would you be happy paying for it? What’s the pay back period? Is there a return on the investment?