A healthy dose of self-criticism is fundamental to professional and personal growth. When it comes to programming, this sense of self-criticism requires an ability to detect unproductive or counter-productive patterns in design, code, processes, and behaviour. This is why knowledge of anti-patterns is very useful for any programmer. This article is a discussion of nine anti-patterns that I have fo