A programming anti-pattern is a commonly used solution to a specific programming problem, often claiming being an actual design pattern. But such a solution usually leads to adverse effects on an application scalability, testability and maintenance.
An anti-pattern can be thought of as a "worst of breed" solution to a problem in that it may "work" for its intended purpose, but have unwanted side effects or incur technical debt. Anti-patterns can arise from improper education, insufficient experience or simple ignorance.
SQL-Injection
In short, this is an anti-pattern of applying unfiltered user input directly to a database query string. This may seem like a quick and easy solution to querying data, however it can lead to data corruption, security breeches, and so-forth.
Example:
query-string = "select * from users where id='" + userid + "';"
Assuming the userid
variable came directly from the user, an attacker can cause issues by setting the value to something that would cause unexpected behavior:
userid = "' or 1=1;drop table users"
Tight coupling
Instead of keeping two distinct parts of an application separate (CSS and HTML; Business Logic and the View in an MVC application), the parts are mingled such that a change in one necessitates a change in the other.
Example:
CSS
.yellow { color: yellow; }
HTML
<div class="yellow">foo</div>
In order to change the formatting, either the content (HTML) must be changed by substituting a different class name, or the class definition (CSS) must be changed to something that doesn't match its name.
Others
Wikipedia has other examples.