Communication and consistency are key traits of patterns. Likewise, a lack of these creates anti-patterns like the wolf ticket. We all know that standards are helpful and a worthy pursuit. However, there are de facto standards that can cause us headaches. Let's look at how a good intention can turn into an anti-pattern.
A Wolf Ticket DefinitionA wolf ticket is not that different from smoke and mirrors. It is a standard or other conforming to rules where there is no enforcement. Buzz words are a common example. We see a word or phrase thrown around because it is the hot topic of the day. However, there is a lack of vetting or validation to ensure compliance. While people may tend to go the same way and have the same view of the architecture (in our case), there is no way to prove that is the case.
Therefore, a wolf ticket is related to a wolf in sheep's clothing. We think we are doing the right thing and it looks good from the outside. However, an anti-pattern lurks beneath the surface.
The Anti-Pattern In ActionWe have seen similar issues in other anti-patterns that are driven by assumptions. This one is no exception. We start with a good intention of looking to standards. There are many benefits to standards and we will not rehash them here. However, we fail to document and define those standards. Instead, we just sort of let them happen organically. While there is some value in this as a starting point, the lack of a formal standard can bite us.
For example, the web is based on a standard for HTML and related technologies. Browsers have to support these in order to work properly. However, there are extensions that grew based on needs. These sort of fell into standards but were not defined enough. That led to issues with browsers being inconsistent in what they supported and how. The base standard was consumed by a wolf ticket anti-pattern and countless headaches were created.
Avoiding The Anti-Pattern Clarity and validation are the two ways to avoid this particular anti-pattern. We need to be clear on what is and what is not a part of any standard (or architecture) we create. Likewise, there must be a way to validate adherence to the standard. Unit and regression testing are excellent tools for building in and confirming adherence. However, there are many other ways including documentation and code reviews.