"What is your budget?
I ask the same question to every potential client in our first meeting. The common response I hear is "well why don't you tell me what it should cost?"
I'm trying to.
"What is your budget?" is not a trick question to regurgitate an estimate with the same number you just gave me. Instead, it is a constraint with which we can assess what features should or should not be included in this version.
Ironically, I always get asked in the first meeting "what will this cost?" To which, I generally respond "somewhere between $10,000 and $10,000,000".
My response is not to be disparaging, but rather to show the reality of software development. I will walk you through an example to understand what I am talking about.
Bob's Pizza Truck App Discovery Meeting
Bob: Hi, below is a list of features that I need to have in my application:
- Beautiful design, must be top of the line
- Find my location on a map and identify the closest pizza truck
- Leave feedback on customer orders in real time
- Self order so customers do not have to talk to the truck rep
- Pay online from the app
- Build custom pizzas online
- I have 5,432 trucks across the USA, Mexico, and Germany
- Central admin dashboard that will give me all of my company stats
- etc, etc, etc
Me: That's a great, long list.
Bob: This application must be the simplest, easy-to-use pizza app in the world! I want to beat all of my competitors! What is it going to cost me?
Me: Woo! I'm excited! This is a very cool app. What is your budget?
Bob: No, no. I'm scared that the number I give you will just be exactly what you tell me. You just tell me what it is going to cost.
On average, I spend 5-8 hours estimating a project. Those 5-8 hours are for a single, budgeted version. Imagine this application on different price levels.
Bob may just want a web application with no native iOS or Android work. This would not require me to write APIs and I could build a Rails application to handle everything.
He may just want feedback to be stored in a database for later review.
There may be 2-3 dropdown options that the user can select to build the pizza and it would just email the order to someone in the truck. Pay online could be as simple as selecting cash or card and they perform the payment in person. Or, it could be a Paypal form.
The admin dashboard may just be a Cyfe dashboard with some of the integrations built in.
With so many users, it might make sense for Bob to launch with a native iOS and Android app along with a web application. This would require me to write APIs that would talk with the server + two additional code bases. This would also allow Bob to send push notifications to the users when their pizza is ready which is a completely separate and additional service.
'Feedback in real time' might mean that Bob wants a display on his truck that would pull in live feedback snippets from his customers. Are those snippets going to be from a specific truck location only? Are they aggregated from all 5,432 trucks? Does he wants displays inside the truck that pull in the order information for his cooks to process? Does he want a timer on the order so he can track how long it takes his staff to serve a pizza? Will the app need to be translated to English, Spanish, and German to accommodate the countries they service?
Does the pizza builder require a fully animated pizza that will drop toppings on as you select them? Will it come pre-populated with famous celebrity's orders? Will there be a little pizza man dancing in the background while you build the pizza and the pizza spins and puts itself in the oven once you select 'done'? Does the payment options include CC, Paypal, Venmo, etc?
Will the admin dashboard be a live, custom dashboard that will require it to be written with web sockets? Will it contain the Quickbooks information that you need to run the business? Can you see that dashboard on your phone screen?
I have only touched the surface on the number of options we could contemplate while building the application. I haven't even taken scale into consideration. Do each of the 5,432 trucks have 250 customers a day that will be using the application? What implications does that have? We will need to be ready to handle 1,358,000 customers on day one.
Our sample 'small' and 'large' applications above have roughly a 10x difference in price. If I were to assume that Bob wanted to pay for the large app because he said "This application must be the simplest, easy-to-use pizza app in the world! I want to beat all of my competitors!" where would that leave me when his budget was for a small app?
Budgets are friendly. They do not limit innovation, they just define the constraints to work within.