Tuesday, June 23, 2009

Anti Patterns

Had a blast with this link: http://en.wikipedia.org/wiki/Anti-pattern
Presenting an abridged, non-technical version here, because links also die sometimes.
Check out the definitions for mushroom management!

Organizational anti-patterns

* Analysis paralysis: Devoting disproportionate effort to the analysis phase of a project
* Cash cow: A profitable legacy product that often leads to complacency about new products
* Design by committee: The result of having many contributors to a design, but no unifying vision
* Escalation of commitment: Failing to revoke a decision when it proves wrong
* Management by perkele: Authoritarian style of management with no tolerance for dissent
* Moral hazard: Insulating a decision-maker from the consequences of his or her decision.
* Mushroom management: Keeping employees uninformed and misinformed (kept in the dark and fed manure)
* Stovepipe: A structure that supports mostly up-down flow of data but inhibits cross organizational communication
* Vendor lock-in: Making a system excessively dependent on an externally supplied component

Project management antipatterns

* Death march: Everyone knows that the project is going to be a disaster – except the CEO. However, the truth remains hidden and the project is artificially kept alive until the Day Zero finally comes ("Big Bang"). Alternative definition: Employees are pressured to work late nights and weekends on a project with an unreasonable deadline.
* Groupthink: During groupthink, members of the group avoid promoting viewpoints outside the comfort zone of consensus thinking.
* Smoke and mirrors: Demonstrating how unimplemented functions will appear
* Software bloat: Allowing successive versions of a system to demand ever more resources

Analysis anti-patterns

* Bystander apathy: When a requirement or design decision is wrong, but the people who notice this do nothing because it affects a larger number of people.

Software design anti-patterns

* Gold plating: Continuing to work on a task or project well past the point at which extra effort is adding value
Programming anti-patterns

* Accidental complexity: Introducing unnecessary complexity into a solution
* Boat anchor: Retaining a part of a system that no longer has any use
* Cargo cult programming: Using patterns and methods without understanding why
* Coding by exception: Adding new code to handle each special case as it is recognized
* Error hiding: Catching an error message before it can be shown to the user and either showing nothing or showing a meaningless message
* Lava flow: Retaining undesirable (redundant or low-quality) code because removing it is too expensive or has unpredictable consequences

Methodological anti-patterns

* Golden hammer: Assuming that a favorite solution is universally applicable
* Improbability factor: Assuming that it is improbable that a known error will occur
* Premature optimization: Coding early-on for perceived efficiency, sacrificing good design, maintainability, and sometimes even real-world efficiency
* Programming by permutation (or "programming by accident"): Trying to approach a solution by successively modifying the code to see if it works
* Reinventing the wheel: Failing to adopt an existing, adequate solution
* Silver bullet: Assuming that a favorite technical solution can solve a larger process or problem

No comments:

Post a Comment