Overview
Occasionally we discuss projects with clients who want us to create a web application with an enormous quantity of features. The disadvantages of this approach are:
- very difficult to accurately estimate costs. developers tend to over estimate;
- huge number of decisions to be made regarding software features (increases development time);
- unknown whether users receive benefit from all features (unused features lead to waste);
- development costs are high;
- project management required which increases overhead costs;
- testing is harder and thus more difficult to ensure quality;
- development cycle is long; and
- revenue delayed due to long development cycle.
We suggest an evolutionary approach to software development. A development evolution unfolds as follows:
- Select short list of features. (See Creating a Features Short List below).
- Write project specification detailing features.
- Design and develop software.
- Test software.
- Place software into production.
- Collect revenues.
- Gather feedback from users and use to guide future development direction.
- Repeat from step 1.
The advantages of an evolutionary approach are:
- small set of decisions regarding software features. less decisions means less time;
- user feedback can be used to guide future development direction;
- development costs are lower;
- little project management required thus reducing overhead costs;
- testing is easier, thus increasing software quality;
- development cycle is shorter; and
- revenue realized sooner due to short development cycle.
Creating a Features Short List
A project with a huge feature list is extremely difficult to estimate. Developers over estimate due to concerns about working beyond the budgeted hours for the project resulting in reduced income for the developer. Over estimating leads to higher development costs for you. By reducing project size developers can more accurately estimate project costs. This results in better or lower development costs for you.
- Review sample web sites in detail. Understand how each feature works and its relationship to other features.
- Write a list of the features with a name and short phrase describing the features resulting in 1-2 pages.
- Prioritize the features into three groups:
- Critical Features
Features required in order for the application to be useful.
- Important Features
Features which add significant value to the application but are not critical for basic operations.
- Nice To Have Features
Features that add "polish" to the application but are not critical for basic operations
- Write a short 3-4 sentence description of the Critical features. Your Critical features list will be turned into the initial project specifications.