The REAL Impact of Feature Creep

Feature creep (also known as requirements creep or scope creep) is the tendency for product features or project requirements to increase during development, beyond those originally foreseen. Feature creep also suggests an ongoing behavior where the addition of new features are performed without consideration to the original project goals and without corresponding increases to the project budget or schedule.

Popular causes of feature creep are:

  • Projects that are poorly defined and/or have not been adequately aligned with a business goal.
  • Projects that are driven by a client’s growing wish list, which may include features that are beyond the product’s primary purpose and initial goals.
  • Products that are designed by committee. The attempt to address multiple viewpoints could result in a product that is not cohesive and overly complicated.
  • The development team’s attempt to address a perceived lack of improvement to the product by adding new features. This is particularly true if the product has already reached a point where it does everything it was originally designed to do.

The disadvantages of feature creep

The one thing that is certain during a development process is change. People change. Businesses change. While it is important to be able to adapt to ongoing project requirement changes in a timely fashion, you must ensure that the additions are in line with the business goals, provides measurable business value and that the impact to the project’s scope, budget and schedule are known. A few disadvantages to uncontrolled feature creep are:

  1. Unmanageable costs. Each new feature and function added will affect your schedule, project costs and will influence the overall technical quality of the resulting product. If the implementation and maintenance impact of each new feature is not accessed you risk spending too much money, not meeting your targeted implementation dates and degrading the overall quality of the final product.
  2. Increased Complexity. If additional feature requests are not evaluated properly, it could lead to more complex user interfaces and product designs. You should consider the impact that the new feature has on the total feature set.
  3. Poorly defined Business case. The ongoing addition of features can lead to the incremental drifting away from your original purpose and initial goals. At some point, you could loose sight of the original purpose for using the product because it has gradually morphed into something much different than you originally intended.
  4. Inefficient use of resources. Each new feature requires resources for implementation, usage and maintenance. How does the new feature utilize your staffing, budget, hardware and software resources? Is the resource drain worth it?

Avoiding feature creep

Sorry. Feature creep is unavoidable. It happens. Sometimes there’s a good reason for expanding a product’s feature set. Ensure that every new feature added to your product directly supports your overall purpose and goals.   You can do this by allowing enough time for requirements gathering to ensure that you have a well-defined vision. Then, for each new feature, you must be explicit about the REAL impact to costs, schedule and to the overall complexity and quality of your product. Don’t discount the small changes. Small additions can have great impact. That change that took “only one hour” to implement may have very little impact to your budget and schedule, but may create more complexity which can impact the technical quality of your product and increase your long-term maintenance costs. The recommendation for dealing with feature creep is not to avoid it, but to expect it and plan for it. Then, use a well-defined change control process for evaluating and assessing newly requested features.

 

Leave a Comment!

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Related Posts