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 and duration of the project, and even the quality of the result. Therefore, when a client comes and 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. This is the same situation as 'how much would it cost to build a deck?', which seems like a reasonable question 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 innocent seeming 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 encapsulate what a similar project may approximately 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 expanded into
- technology requirement
- a detailed parts list
- a detailed task list, and
- time estimates for completing your project as currently defined
- 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
