Working on various ideas and concepts, It is always crucial to be able to put price tags on them;
Nothing in life is free- and the same goes for developing projects.
I often find it funny how non-tech savvy people set expectations for the time cost to create this or that-
“So I want those features, and have it shoot fire out of it’s nose while making coffee- how long will it take to build? probably a week right? ”
…
“A month ?! really? 😦 ”
Time estimates for projects in general (and especially software) are tough, even for experienced programmers.
The main reason people find it hard, is not that they can’t evaluate the costs for the task at hand, but rather the fact that they don’t see the full picture;
The tiny sub-tasks that hide between the lines, the other (big or even huge tasks) that lie beyond your current line of sight – or in other words “The Unknown”.
Many times the unknown may contain more time-costs than the kernel you started out with. This, combined with what I call “Thinkful wishing”, leads to unrealistic estimates. Of course, the more you lack in experience- the more ‘Unknown’ you’ll have.
How can we solve this? Well, there are a lot of techniques in use that can help:
The classic leader, TOC, points to a simple answer- break things down to the smallest detail you can, and leave proportional wiggle room for mistakes (Buffers).
The problem with TOC is that even with the strongest research possible, you can’t predict the future, there will always be room for more costs to hide. In addition a strong research will be costly on it’s own.
Now-days agile techniques such as Scrum are favored thanks to recognizing the fact that the unknown is here to stay. Scrum mitigates the unknown by continuously re-evaluating the task.
I personally like to use my own flavor of Scrum, where along side task evaluation, I evaluate the Unknown as unknown (I may cover this in a future blog post).
As you gain experience you learn that there are some constants in reality, boundaries that are almost always true.
I always use the following points as key sanity-check markers. These can be really helpful, especially for the non-tech-savvy who try to better grasp the technical world-
- Nothing takes 5 Minutes (no matter how small)
- No project takes less than a Day.
- No product takes less than a Month.
Remember – nothing that you can deliver to a costumer takes a week to make.
Most things will take at the lowest, lowest cost a MONTH to build.
If someone tells you otherwise – he’s lying!
Tons of luck to us all !
Or Weis.