When contacting a professional for help with building a deck, the professional will often ask for information such as what the dimensions of the deck will be, how high off the ground the deck will be, what kind of wood will be used, and what treatments should be used to seal the wood. In terms of software development, these decisions form the beginning of a 'design process' which clarifies in the mind of the client and in the mind of the professional exactly what needs to be delivered.
A custom software project, just like a custom-made deck, is made up of many such decisions, which impact the final price, duration, and even quality of the result. Therefore, when a client asks, 'How much will it cost to make a website?', or 'How much will it cost to make a system to manage a shopping mall?' - unfortunately, there is no simple answer. Likewise, the question, 'How much would it cost to build a deck?' seems reasonable on the surface, but the real answer is that it depends on what kind of deck the client wants.
Will the deck have posts? Are there constraints on where these posts can be? How high is the deck off the ground, and is the ground level or is there a grade? These are all reasonable questions to ask, and just as a qualified deck-builder will start to investigate the details of the initially simple-sounding deck project, so must a custom software project estimator probe for the hidden 'gotchas'.
On the other hand, to estimate the cost of building a deck, it is possible to list how many screw holes must be drilled, how many times the wood will need to be cut, how much wood, how much stain, how many screws, and how much time that will all take.
Likewise, an experienced estimator can usually come up with ballpark figures that may roughly estimate what a similar project may cost. However, the nature of software design is one of discovering the decisions that will need to be made early on, and then estimating the quantity and nature of the remaining decisions. This is inherently more difficult than estimating the cost of building a deck, because there are so many more details that must be taken into account. Therefore, there is an element of risk on the part of the estimator.
The estimation of a custom software project usually involves a fair amount of work, which can be categorized into several parts:
- The business requirements are broken down into
- the technology requirement
- a detailed parts list
- a detailed task list, and
- time estimates for completing your project as currently defined
- the technology requirement
- Steps are taken to understand the project better, and to go through a design process that will find and answer as many design questions as early as possible, in order to produce a consistent design and project vision for the developers and other project stakeholders such as the project sponsors.
Deliverables of this process include:
- A project plan
- A clearer understanding of costs and timelines
- A set of clearly defined tasks that can be given to software developers
