There are no estimates, only budgets
“How much does it cost to build my website?”
“How much does it cost to build my mobile app?”
“How much does it cost to build our IoT analytics portal?”
These are very reasonable questions, but there are few morally responsible answers. The only responsible answer is: “Well, what’s your budget?”
Over the years, I’ve gathered a list of common features that have a surprising range of costs:
|Feature||Lowest I’ve Seen||Highest I’ve Seen|
|Grid layout on a homepage||$1,000||$600,000|
The challenge of estimating software projects is that software is a creative act: you can paint a line, or you can paint a Monet. Every person involved has a different opinion about the amount of creativity needed for every minuscule feature.
I’ve noticed there is no way to predict where people will fall on the scale. I’ve seen small businesses desire the million dollar login form, and I’ve seen global enterprises be fine with the $500 version. This is why estimation is so dangerous.
What to do
- Highest Impact: Get yourself a Product Manager
- Product Management is a career field that specializes in finding the right value for your business given your constraints and priorities.
- Second Highest: Don’t go cheap on talent
- A senior engineer, years into their career and a history of holding a job, has seen it all before. They know the best way to implement a feature given the constraints.
- Third Highest: Dedicate a business decision maker to the project at least 25% of their time
- Every single feature, no matter how small, needs to be considered given the budget constraints and priorities of the business. There are thousands of micro-decisions to be made on virtually all software projects.
- Fourth Highest: Kill your darlings
- Budgets are a hard constraint. Time is a hard constraint. The only thing that has any slack is the scope. Every software project that ever launched on time involved stakeholders swallowing their desires and respecting the reality of their constraints.
The Most Important Thing
The most important thing in software is to launch as quickly as possible. Unshipped software is like having a stockpile of inventory wasting away in a warehouse. If you want to celebrate a successful launch, focus on collaborating with your product teams, changing the scope of features based on budget, and letting go of your darlings.