Estimating project costs is hard. Do a project based bid… uf, it’s prone to your own optimism bias and you end up over a barrel. Hourly? Great. Fair for both parties, but as time drags on mistrust can grow as cost directly relates to the speed of development. In either situation, the likelihood that important features get cut to limit scope is high and ultimately the product suffers.
That’s why I’m proposing a third option: if-statements should cost $10,000 each.
“Whoa, whoa, whoa, that would never work” I hear you say. But there’s never been an easier way to convey the scope and cost of a project than if-statement based billing. What is an if-statement? An if-statement is the most essential unit of business logic. A small piece of logic that will linger in your codebase for the life of the entire project. Larger software applications have more business logic, thus are more expensive. We can use if-statements as a proxy for complexity and bill accordingly. At the end of the day developers can count up the number of if-statements and invoice the corresponding cost centers.
What about small projects, you say? Well, the beauty of this is something simple like a blog is actually free! Free website? Yes, please.
But let’s say your app has a logged-in or logged-out state, well, that’s at least 2 if-statements. Starting price: $20,000. Never before has it been this easy to price and scope out complex stateful apps!
Do you build Component Systems? Simple static components are free. But most components increase their cost due to the The Nine States of Design. Each component likely has a mix of “none”, “one”, “some”, “too many”, “error”, and “done” states. That’s a lot of logic and use cases packed into a little module, so it’s gonna cost ya. But you’ll rest assured that you’ve covered all your bases as well as billed appropriately.
Need an if-statement with 2 conditionals? Look, I’m not a scam artist so I’ll give you the second conditional at half-price. But if it gets any more complex than that and we have to build a big juicy Karnaugh Map, that gets into bitwise operators (which are generally a terrible idea in JavaScript) and will double the cost per switch case.
I also want to be a bit more transparent with the cost here. The $10,000 just covers the up-front cost of the if-statement. Fred Brooks (author of The Mythical Man Month) estimates:
The total cost of maintaining a widely used program is typically 40 percent or more of the cost of developing it. Surprisingly this cost is strongly affected by the number of users. More users find more bugs. (Source)
That $8,000+ maintenance cost over the lifetime of the if-statement would be a separate contract. But this is a value-add that protects you from the likely event where the sole employee who knows how the code works gets another job at a hot new startup.
Interested to hear more? Download my whitepaper and join me on this new wave of thought technology. Cast away old billing measures and pave the way for the Occam’s Razor of project estimation: if-statements should cost $10,000 each.
Disclaimer: This is not how we bill at Paravel, nor would it really ever be. This is a way to discuss the cost of complexity in a tangible way. I’ve seen if-statements create gnarled chunks of completely undocumented complex business logic baked right in the front-end even. It’s trivial to come up with new rules and respond to new scenarios, but as that logic tree gets bigger, code becomes more valuable and harder to move or maintain. This logic be can session based, front- or back-end based, viewport-based, or even based on device features like in a Progressive Enhancement scenario. Any bit of logic compounds the complexity and thus the cost of building and maintaining an application. For me it helps to put a dollar amount on complexity.