An antipattern is a frequently used, but largely ineffective solution to a problem. The term was originally used to refer to a pattern gone wrong. Just as a viable pattern describes the way from a problem to a valid solution, an antipattern describes the way from a problem to a poor solution. Furthermore, by adding more difficulties to the ones that originally existed, an antipattern may leave you in a worse position than before you started. Several writers have published books or papers on how to recognize and avoid adopting an antipattern, especially in developing computer programming.
The term amelioration pattern (to ameliorate means to improve, and especially to improve a bad situation) was coined for a pattern that describes how to go from a bad solution to a better one.