CSC/ECE 517 Fall 2010/ch7 7g ms
Analysis Paralysis Anti-Pattern
Analysis Paralysis Anti-pattern
In software engineering, an anti-pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice1.
Analysis paralysis is one of the classic anti-patterns in object oriented software development. In analysis paralysis, we over analyze (or over think) a situation until no decision is ever made, which effectively paralyzes the current process' outcome.
History
In Aesop's Fables' "The Fox and the Cat", the fox has "hundreds of ways of escaping" while the cat has "only one". When they heard the hounds approaching, the cat scampered up a tree while "the Fox in his confusion was caught up by the hounds". The fable ends with the moral, "Better one safe way than a hundred on which you cannot reckon."
In The Tragedy of Hamlet, Prince of Denmark, the main character, Prince Hamlet, is often said to have a mortal flaw of thinking too much, such that his youth and vital energy are, in Shakespeare's words, "sicklied o'er with the pale cast of thought."
How to Defeat Analysis Paralysis
*Keep models small. Never integrate them. Building a bigger model doesn't add knowledge - it destroys knowledge *Employ a professional architect *Start your project with one requirement and an architectural prototype
The PDCA Model
*Plan *Do *Check *Act
Causes
In software development, analysis paralysis typically manifests itself through exceedingly long phases of project planning, requirements gathering, program design and data modeling, with little or no extra value created by those steps. When extended over too long a timeframe, such processes tend to emphasize the organizational (i.e., bureaucratic) aspect of the software project, while detracting from its functional (value-creating) portion.
- Pride
- Narrow Mindedness
- The lure of infinite composability and decomposability
- Insistence on completing all analysis before beginning design.
- Regular change of leads and their philosophies (each trashing and restarting the work of the previous)
- Too many learning curves at once (underqualified analyst) causing incessant revisiting of prior work
- Lack of goals
- Increasingly conflicting goals (often political)
- Creative speculation, when discovery and definition are required.
- BigProjectSyndrome: this one will do it all, will use the latest tools, will use a new paradigm, will use all new developers, will start with a clean slate, will handle all use cases of two or more existing systems in the first release, etc.
- Risk avoidance, fear of making a mistake.
References
[1] Wikipedia. (2010, November) Wikipedia - Anti-Pattern. [Online]. http://en.wikipedia.org/wiki/Anti-pattern] [2] Analysis Paralysis. (2010, November) Analysis Paralysis. [Online]. http://c2.com/cgi/wiki?AnalysisParalysis] [3] Analysis Paralysis. (2010, November) Programming Management Anti-Patterns. [Online]. http://sourcemaking.com/antipatterns/analysis-paralysis] [4] Marelisa. (2010, November) How to Defeat Analysis Paralysis – The PDCA Model. [Online]. http://abundance-blog.marelisa-online.com/2010/06/26/defeat-analysis-paralysis/]