Sometimes we get into a situation where the client feels frustrated because the developer won't give them an estimate for their idea, and they can't understand why.
Here's why: because the developer is an honest person, and doesn't want to lie to you. They have experience with people asking for one thing, getting a price, then giving additional details about what they want and being upset when the price changes. They want to spare you that trauma. They want to spare themselves the trouble of explaining the change in cost. They don't want to be wrong in the first place; they'd rather just get all the information necessary and give the right answer the first time.
That's why developers are so big on specification, and hesitant to give an estimate based on too little information. To a developer, giving a wrong estimate based on too little information amounts to failure. Developers hate to fail!
The following is a post I made to a mailing list where the question "how much would it cost to develop my very simple app?" came up.
[T]o follow up on [this, someone] asked, in effect, "I have an idea for a simple app, how much would it cost to have that developed?" Someone else replied "that's a bit like asking 'how long is a piece of string?'"
"How long is a piece of string?" is given as a humorous answer, but it's actually a good analogy. Imagine you walk into a store where they sell string. You might have this sort of conversation:
- Client: How much for a piece of string?
- Developer: $0.03 per foot -- how much would you like?
- C: Oh, not so much. I just need a little piece. How much will that cost?
- D: Probably not so much, then. How much do you need?
- C: Not very much -- really, my string-needs are very simple. Can you say specifically how much it will cost, so I know how much money to bring when I come back to pick up my string?
- D: Well, will 3' be enough for what you need?
- C: I think so. I don't need very much, really.
- D: 3' of string would cost $0.09. Maybe you should measure how much string you need, then I can give you a better idea of the cost.
Then client goes to another store to compare prices and has the following conversation:
- C: I need to do some simple tying, how much will it cost for string?
- D: That depends on what kind of tying -- what are you trying to do?
- C: I need to tie my old couch to the roof of my car to take it to the dump. It's really very simple, I don't need much string.
- D: Hmmm. For that, you should probably use something sturdier, rope, perhaps. We have 50' bundles of clothesline -- a lightweight rope suitable for this job -- for $1.49.
- C: What??? $1.49?!?! The guy at the other store told me it would only cost $0.09!!!
- D: That's insane, nobody can do that!
Client leaves in a huff, thinking this 2nd developer is a total git. He returns to Dev#1.
- C: I'd like that $0.09 worth of string you offered me.
- D: <measure, snip> Here you go. I made it a few inches long, just to be sure. Plus I taped the ends, so it won't unravel.
- C: Thank you!
Client leaves happy, gets home, discovers he can't tie his couch to the roof of his car with 3' of string, and is mad as all get out. He tells all his friends about how it took him 2 hours just to buy a simple piece of string, and the garbage he was sold wasn't even fit for kite flying, and all developers are jerks!
- Who screwed up in this story?
- What were they mistakes they made?
- What could be done differently for a better result, next time?
Software development is like that. Use the lessons learned here, and the answers to the pop-quiz to have a better software development experience. If you're going to develop iOS apps, you may as well enjoy it! :)
Some hard numbers:
- Trivial app:
- There are no trivial apps that any developer you'd hire will write to put in the store. If your app idea is truly trivial, consider not doing it. If you must, find a high school kid to do it for pizza. A good developer will lose more time talking with you and setting up your account than it will take to write a trivial app. A bad developer will just give you headaches. Really, find a kid. Or don't do it.
- Nearly-trivial app:
- I wrote a simple tic-tac-toe game that, had someone been paying me to do it, would've been in the $2,000 range. It was well under $1,000 (in time -- obviously, I didn't pay myself!) to get the basics working, but turning "the basics are working" into a finished, polished product took another day or two. If you count that I did 2 updates to make some minor adjustments we're probably pushing close to $3,000 for tic-tac-toe. (NOTE: One of the tricky bits that non-programmers might not suspect is to get the computer-player to be not-stupid. Do YOU know a good many-player 4-in-a-row algorithm...? :)
- Very simple app:
- I had an intern (junior programmer, new to iOS) write a simple data processing app. We were given a set of files to parse into data structures, and the spec was AMAZINGLY CLEAR in that there was an existing Android app that we were cloning. This is a very simple table navigation app with client provided data and amazing spec. Even still, the basics were easy but, by the time we got all the polish onto it we were nearing $4,000 (hours/cost adjusted for intern-work.)
- Less-simple apps:
- Once you add in location services, photo-selection, AR, animated graphics, user-drawing, "the cloud" (even a database back-end) or any of a dozen other things, your app starts to leave the world of "very simple" and enters the "more complicated than that" space. How much more complicated -- how much more expensive to develop -- that's hard to say without specifics. "How long is a piece of string?"