What Is an Agile Antipattern?
An antipattern is a commonly used practice that aims to solve a recurring problem but often results in negative consequences. In fact, these quick fixes tend to cause more issues than they solve. Another defining characteristic of antipatterns is that they aim to rectify a problem for which a proven, effective solution already exists.
According to the Agile Alliance, the term was coined in 1995 by US computer scientist Andrew Koenig. He wrote: “An antipattern is just like a pattern, except that instead of a solution it gives something that looks superficially like a solution, but isn’t one.”
So, what is an antipattern in Agile? It’s the same thing. Antipatterns are closely linked to Agile teams because the original term was inspired by design patterns that occur in software development, where the Agile methodology is commonly used. They are also referred to as “design smell” or “code smell.”
A software developer may intentionally use Agile antipatterns, knowing their tendency to deliver undesirable results. However, it’s likely they are simply unaware of the adverse effects of the particular Agile antipattern they are using. As Martin Fowler, one of the signatories of the Agile Manifesto, stated on his website: “The fact that it looks like a good solution is its essential danger. Since it looks good, sensible people will take the path — only once you’ve put a lot of effort into it will you know its bad result.”
You might think you have solved a problem with your Agile antipattern, but you’ve just created a different one (or extra ones) that you’ll have to deal with further down the line.
Examples of antipatterns in Agile
So, what does an Agile antipattern look like? Here are some examples of Agile antipatterns that frequently occur in Scrum, the most widely used Agile framework.
- An unrefined backlog: When the product owner fails to properly maintain the list of tasks to be carried out by a Scrum team
- Command and control: When managers lean too much towards traditional project management and assign tasks to team members, robbing them of any sense of ownership
- Inefficient Scrum meetings: When the daily standup turns into a status meeting, leading to off-topic conversations and time overrun