Skip to content

Instantly share code, notes, and snippets.

@dimabory
Last active February 11, 2019 09:12
Show Gist options
  • Save dimabory/6ba487883323fdf9403d64de542087a4 to your computer and use it in GitHub Desktop.
Save dimabory/6ba487883323fdf9403d64de542087a4 to your computer and use it in GitHub Desktop.

http://wiki.c2.com/?AntiPatternsCatalog

Organisational

  • Analysis paralysis – devoting disproportionate high effort to the analysis phase of a project.
  • Design by committee – the result of having many contributors to a design, but no unifying vision.
  • Vendor lock-in – making a system excessively dependent on an externally supplied component.

Project Management

  • Avalanche – an inappropriate mashup of Waterfall model and Agile Development techniques.
  • Groupthink – during groupthink, members of the group avoid promoting viewpoints outside the comfort zone of consensus thinking.
  • Over-engineering – spending resources making a project more robust and complex than is needed.
  • Smoke and mirrors – demonstrating unimplemented functions as if they were already implemented.
  • Software bloat – allowing successive versions of a system to demand ever more resources.

Analysis

  • Bystander apathy – when a requirement or design decision is wrong, but the people who notice this do nothing because it affects a different group of people.

Software Design

  • Big ball of mud – a system with no recognisable structure.
  • Gold plating – continuing to work on a task or project well past the point at which extra effort is adding value.
  • Inner-platform effect – a system so customisable as to become a poor replica of the software development platform.
  • Interface bloat – making an interface so powerful that it is extremely difficult to implement.
  • Magic pushbutton – coding implementation logic directly within interface code, without using abstraction.

Programming

  • Cargo cult programming – using patterns and methods without understanding why.
  • Spaghetti code – programs whose structure is barely comprehensible, especially because of misuse of code structures.
  • Lasagna code – programs whose structure consists of too many layers.

Object Oriented Design

  • Base Bean – inheriting functionality from a utility class rather than delegating to it.
  • God object – concentrating too many functions in a single part of the design.
  • Object orgy – failing to properly encapsulate objects permitted unrestricted access to their private parts.
  • Yo-yo problem – a structure that is hard to understand due to excessive fragmentation.

Methodological

  • Copy and paste programming – copying and modifying existing code rather than creating generic solutions.
  • Golden hammer/Silver bullet – assuming favourite solution is universally applicable.
  • Not Invented Here – tendency towards reinventing the wheel.
  • Invented Here – due to lack of confidence, tends to dismiss any non-trivial inhouse code.
  • Premature Optimisation – coding early-on for perceived efficiency, sacrificing, good design, maintainability, and sometimes even real-world efficiency.
  • Reinventing the square wheel – failing to adopt an existing solution and instead develop a poor quality custom one.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment