Anti-patterns

As said before, anti-patterns are self-reinforcing, like all patterns. They are feedback loops, but unlike other patterns, they consume energy from their hosts rather than protect or repair.

We see an anti-pattern in action in the staged debate[Debate82]. Peter Eisenman appeared to believe there were consequences for making mistakes or causing problems. This belief is probably the root of many issues in many organisations. But it’s just that. It’s a belief. It’s not true.

I will repeat again for those who missed it earlier: if you cause problems, you will only be blamed for them if they’re the kinds of problems affecting those in power.

It’s not just in architecture. These cultural anti-patterns are everywhere. Think about the number of times you’ve heard someone suggest,

'I think we've got a communication problem. We need to have people working closer together to resolve this'.

And no one calls them out on how working closer on a project can decrease speed because communication becomes a massive overhead. Or perhaps they say,

'We have too many meetings, and nothing is getting done. We should trim them back. Let people concentrate on the work'.

But again, no one fights back, even though the meetings could be lengthy because things still need to be disambiguated, and getting stuff done would be getting the wrong stuff done badly.

Both these statements could be true. However, you could make either statement about the same situation, and neither would be out of place. So which do you choose? When an observation cannot be denied, and the action seems like a reasonable correction, why would you try to stop it? This action-paradox blindness can affect any group that prioritises solutions over analysis.

This also happens when you are surrounded by people who think similarly or when the solution is outside your normal range of strategic comprehension. We reinforce bad solutions to our problems. As another example, if everyone has been educated in business in the same cost-accounting way, you can end up with everyone trying to cut costs rather than raise profits, dooming the company to a slow death.

A system will hand out rewards for actions it considers correct. If it hands out a reward, the action will be repeated or strengthened. If the senses of a system are tuned to reward poisoning the well, the well will be poisoned while people gather around to cheer on the poisoners.

People have such a deep belief in natural justice that they can’t see the anti-patterns. However, you don’t need to recognise or understand the feedback loop to be affected by it. Interestingly, you can ferret out anti-patterns without knowing their specifics, as many use the same defence mechanisms to maintain their presence.

Age as a defence mechanism

Age provides a sense of validity, even when the ancient element or action is detrimental. We spent a long time assuming bloodletting was a good treatment for diseases. I can fully well imagine a town planner saying ‘Zoning must work at least to some degree because it’s lasted so long’, but this assumes age is an indicator of goodness.

Zoning as a way of restricting the types of buildings in an area has been around for a very long time, going back as far as disallowing certain building types within the walls of a medieval walled city. But what we normally mean by zoning, where the government maps out residents and industry and strictly enforces the law, has only been around for a little over a hundred years.

Just because something has been around for a long time doesn’t mean it’s good. It’s hilarious that the people who use this argument for why zoning is good are the same ones who say traditional architecture isn’t good because it’s old. Something must be wrong here. It must be about more than whether or not something has worked for a long time, as that only means it’s remained active after installing itself. That’s the reason why we have to think about the differences between extrinsic and intrinsic effectiveness.

Zoning was an idea that worked to some extent, but we misunderstand what success means if we ignore intrinsic effectiveness. We need to reconsider these stories in light of what keeps them alive. The property that makes anything a living pattern is its tendency to survive. To this end, we should ask if something is fit for its environment. So, we must investigate the environment.

For zoning, the environment is an everyday North American Western democratic policed capitalist environment. It’s an environment where money will tell you what will get made, as breaking the rules has very little value when there are armed guards to deter you. In this case, if you start a practice of zoning, you will end up reinforcing the zoned areas because one zone type generally begets another in response.

An industrial zone begets workforce residential zones, which beget commercial zones. Once you have many of them, external systems cater for them. Road layouts and utilities become zone-typical.

  • Concrete pouring contractors pop up next to highways built with concrete so that their concrete can reach greater distances.
  • Systems to build become specialised, with timber merchants extending into making regular-sized stud walls, standard height stairs, and predefined apex angles.
  • Shops and malls are built with ample parking to cater for the distance to the residential or industrial areas.

Buildings are erected in zones before their need has been established as developers see a pattern of demand, and being early can lead to profit. More garages and car dealerships appear as the demand for public transport will far outgrow the capacity to provide it because funds will be allocated to services with greater voter impact. More cars demand more fuel and infrastructure, so land is claimed fast to keep costs low. The low land cost makes building large low houses cheap, extending the sprawl’s breadth and making car transport ubiquitous.

All these support systems and the reactions to them make it harder to build non-zoned areas. Non-zoned areas are seen as complicated or bespoke. Centralised command and control economies are generally wary of bespoke constructions. They sound expensive and unregulatable.

But it’s not all bad, right?

Zoning builds infrastructure efficiently for a known purpose. It’s good for keeping people’s homes away from pollution. It’s excellent for making deliveries to commercial buildings easy and non-intrusive. Malls that take deliveries through an entrance separate from the public parking area allow for constant deliveries throughout the day without interrupting commerce or the public from using any of the facilities. In an old city such as London, delivery trucks can get in the way of pedestrian traffic and passenger vehicles.

It would seem that zoning does have a positive value. But it’s an anti-pattern because, despite its apparent benefits, it also has worrying drawbacks.

When you move people away from pollution caused by industries, you make it easier for people to forget they exist, reducing the incentive for the industry to comply with regulations. You also move people away from each other during the day, thereby not only extending the time families spend away from each other by commuting but also inhibiting bonding over breaks such as lunch.

You make it harder for neighbourhoods to build up, as many inter-family bonding activities spark from recreation or work. When you travel by automobile to commercial and industrial districts, you lose another link to your neighbours. Making cars, trains, and buses the standard way to get to work and play produces more roads overall.

All this leads to less land to build on for everything else. It also puts more cars on the road, which is energy-inefficient for the country but a natural consequence of failing to build good public transport into your zoning laws.

What happens when you don’t have zoning? You end up with cities that have their own problems, but you don’t end up stuck in a cycle of enforcing non-zoning. London is a large city with little in the way of zoning laws. Building up the city has taken a very long time, but its structure allows walking to work even today. European towns and villages are walkable, with homes often less than a mile from commercial and industrial workplaces. Whether this is better is somewhat subjective, but the health of those living in European countries is, as a matter of record, better than that of the average U.S. citizen.

Now consider pull-requests. They work to some extent. However, the lack of fast feedback leads to increased rework and they invite more work in progress as you start on something else while waiting for a review. As a reviewer, they interrupt flow which also indicates movement between developers. These are all negatives according to Lean methodology. Is the pull-request concept an anti-pattern?

We’ve always done it that way

'But it's how we've always done it'.

Except, nothing is ever how we’ve always done it. Someone was the first, and someone will be the last. What’s new is not easy. What is old is easy, even if it’s complex. The talk by Rich Hickey, Simple Made Easy, points out the difference between easy and simple and hard and complex. But the one point that hits home regarding the anti-pattern of We’ve always done it that way is that what’s familiar is easy.

When you’re an old hand on a project, complex things can appear easy because they are familiar, even if they are complex. When you’re new to a project, everything is both how it’s always been done, and yet also strange and unfamiliar.

Therefore, to you, because nothing is familiar, nothing is easy. Some things are both hard and complex. When you point out how complex something is, you can be met with dismissive comments due to how familiar, and therefore easy, the complex design seems to the old hands.

When you arrive fresh at a project, you expect everything currently there to be a rule for how things are done. It’s very difficult to announce,

'Well, maybe it shouldn't be done this way'.

While you’re still getting your bearings, you want to ensure you understand everything. You ask questions, but they’re usually in the style of how, not why. And that’s normal. People won’t argue against existing stuff easily. They haven’t the confidence. If they’ve just turned up, then everything is solid and known and unchanging to their eyes.

People onboard to a team and notice things that shouldn’t be the way they are. They will wonder why but not say anything. They can’t claim it could be better because they don’t know the level of investment. Maybe it’s only been there for two or three weeks, and someone who doubted their understanding of what they were trying to solve implemented it on a whim. It could have been there for many years and shipped multiple products. Without asking and knowing, it’s difficult to raise an issue. It saps your energy, and you only have a limited amount of willpower. When you’re new to the job, you’re also worried about ruffling feathers, so you tend to be nicer than you probably should be.

We’ve always done it that way is an anti-pattern—a really strong one. It’s reinforced by people coming late to a project who have better ideas but feel they can’t say anything. It reinforces the idea that we should restore rather than repair or improve to achieve something different and better.

We’ve always done it that way is a case of being stuck in a valley of success in a mountain range you can’t get out of because everywhere else looks terrible from where you are. You can’t even see the real problems you’ve been causing.

They fight for themselves, whether good or bad

Positive patterns, not anti-patterns, create negative feedback loops (self-righting) that reinforce good and healthy actions for their environment. They create systems that fight against disruptive forces. They repair damage and self-create when other patterns are present. But much of the same applies to anti-patterns. The only thing that differs is our interpretation of the result of the actions. If the actions are not seen as healthy for the hosts or environment, we call them anti-patterns. Destructive anti-patterns can create self-fulfilling bad behaviour. Just because a pattern is self-reinforcing doesn’t make it good or bad, just successful. We must always remember to equate success with persistence—not its compatibility with the agents hosting it but how it adapts to maintain its existence.

We define a pattern as good or bad, not because of its self-reinforcing nature but because of the result according to some observer or inhabitant of the environment in which the pattern plays out. In effect, there are no objectively good or bad patterns. All patterns fall somewhere along two axes: the axis of strong or weak reinforcement and the axis of the opinion of those whom the pattern affects. We take the side of the humans, the developers, the customers, and organisations concerning these patterns. But remember this difference: a pattern can be objectively good on the survival axis but is only ever subjectively good on this second axis of benefit to the environment.

Anti-patterns are patterns that have strong intrinsic effectiveness, and we can identify them by the evidence of their negative effect on their environment. Usually, they avoid being placed correctly on the subjective axis, as it affects their survivability when they are identifiably bad. So, anti-patterns aren’t immediately recognisable; they wear camouflage.

It is a stronger position to feign alliance than to antagonise relentlessly. Anti-patterns fake alliance well. They provide small justifications for their existence and so survive limited investigations. Only when we look deeper into an anti-pattern do we see the problems it causes.

Anti-patterns often cause a cycle of repair. A new corner case you weren’t aware of turns up, and you have to fix the fix to the fix. In effect, anti-patterns often get you solving the solution over and over again. I think Christopher Alexander was aware of them but discounted them as not worth documenting concretely. This might have contributed to how his projects played out. Being aware of the flows of value to those working according to the established system may have allowed him to play the game enough to bring a little more light into the world.