Feature creep
The definition of what qualifies as "feature creep" varies among end users, where what is perceived as such by some users may be considered practical functionality by others.[2] Feature creep is one of the most common sources of cost and schedule overruns.[3][verification needed] It thus endangers and can even kill products and projects.
Causes
Feature creep may arise from the desire to provide the consumer with a more useful or desirable product in order to increase sales or distribution. Once a product does everything that it is designed to do, the manufacturer may add functions some users might consider unneeded (sometimes at the cost of efficiency) or continue with the original version (at the cost of a perceived lack of improvement).
Feature creep may also arise as a result of compromise from a committee implementing several different viewpoints or use cases in the same product, even for opportunistic reasons.[4] As more features are added to support each approach, cross-conversion features between the multiple paradigms may further complicate the total features.
Control
There are several methods to control feature creep, including: strict limits for allowable features, multiple variations, and pruning excess features.
Separation
Later feature creep may be avoided by basing initial design on strong software fundamentals, such as logical separation of functionality and data access, e.g. using submenus that are optionally accessible by power users who desire more functionality and a higher verbosity of information. It can be actively controlled with rigorous change management and by delaying changes to later delivery phases of a project.[5]
Variations and options
Another method of controlling feature creep is maintaining multiple variations of products, where features are limited and reduced in the more basic variations, e.g. Microsoft Windows editions. For software user interfaces, viewing modes or operation modes can be used (e.g. basic mode or expert mode), between which the users can select to match their own needs.
Both in many
-v
or --verbose
option manually, does show more detailed information that might be less relevant to minimal users, but useful to power users or for debugging and troubleshooting purposes.
Because the ever-growing, ever-expanding addition of new features might exceed available resources, a minimal core "basic" version of a product can be maintained separately, to ensure operation in smaller operating environments. Using the "
Modularity
Another solution for feature creep is modularity. Power users who require more functionality can retrofit needed features by downloading software modules, plug-ins, add-ons (also known as add-ins) and custom themes to match their personal requirements.
Pruning
At some point, the cost of maintaining a particular subset of features might become prohibitive, and pruning can be used. A new product version can omit the extra features, or perhaps a transition period would be used, where old features were
Consequences
Expansion of scope
Occasionally, uncontrolled feature creep can lead to products that surpass the scope of what was originally intended; this is known as scope creep. A common consequence of feature creep is the delay or cancellation of a product, which may become more expensive than was originally intended.[citation needed]
Delays
Often, a reasonably feature-complete software project, or one with moderate amounts of feature creep, can survive and even thrive through many iterations, but its successor release may suffer substantial delays once a decision is taken to rewrite the whole code base in addition to introducing new technologies. For example, Microsoft's
A similar fate was suffered by
Even after reaching stability and attaining some necessary new features, the open-source Mozilla Application Suite (then named just Mozilla), on which AOL built Netscape, was viewed as "bloated". Just a year later, a group of Mozilla developers decided to separate the browser component, which eventually became Firefox.
Double Fine Adventures' Kickstarter project Broken Age is another example of a project being delayed by feature creep. Originally supposed to have a release date of October 2012, the first half of the game was released in January 2014 while the second half followed late April 2015, and required two separate funding rounds to complete.[6]
Feeping creaturism
Feature creep combined with short deadlines will often lead to a
See also
- Creeping elegance
- Design document
- Digital hoarding
- Emacs, a text editor that has been extended to do many other tasks
- Greenspun's tenth rule
- KISS principle
- Minimalism in computing
- Mission creep
- Overengineering
- Scope creep
- Second-system effect
- Software bloat
- Plug-in (computing)
- Unix philosophy
- Zawinski's law of software envelopment
- Enshittification, of which feature creep can be a component
References
- ^
J.M. Sullivan (8–10 June 2005). "Impediments to and incentives for automation in the Air Force". Proceedings. 2005 International Symposium on Technology and Society, 2005. Weapons and Wires: Prevention and Safety in a Time of Fear. ISTAS 2005. pp. 101–110. S2CID 21079766.
- ^ Featuritis (or creeping featurism). January 2024.
- S2CID 1204079
- S2CID 250326876.
- ISBN 3-540-42130-0
- ^ Double Fine splits Broken Age in half to fund completion, By Kris Ligman, 2013-07-02, Gamasutra
- ^ feeping creaturism, 2016-05-27, FOLDOC.org - The Free On-line Dictionary of Computing
- ^ Raymond, Eric S.; et al. (December 29, 2003). "feeping creaturism". The Jargon File. Ver. 4.4.7. Retrieved June 20, 2017.
- ^ Raymond, Eric S.; et al. (December 29, 2003). "feeping creature". The Jargon File. Ver. 4.4.7. Retrieved June 20, 2017.
- ^ Raymond, Eric S.; et al. (December 29, 2003). "feep". The Jargon File. Ver. 4.4.7. Retrieved June 20, 2017.
External links
- Creeping Featuritis, ContentCreationWiki (registered on October 23, 1995 at the latest.)