← Misc

Pattern Language

These are various “patterns” that I tend to use and reuse in my thinking. This page is inspired in no small part by Jacky Zhao’s “A Pattern Language” and her list of patterns. Is this really accurate to Christopher Alexander’s A Pattern Language? No idea, but I find this useful.

Table of Contents

Open Table of Contents

Chesterton’s Fence

Before you remove a fence, figure out what it’s for.

References

Details

In the matter of reforming things, as distinct from deforming them, there is one plain and simple principle; a principle which will probably be called a paradox. There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, ‘I don’t see the use of this; let us clear it away.’ To which the more intelligent type of reformer will do well to answer: ‘If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it. — G.K. Chesterton, The Drift from Domesticity

Thanks to cultural evolution, many perplexing human behaviors are actually adaptive, even if participants can’t actively explain themselves. If you suddenly change that behavior, you might find that it was load-bearing — it was completely necessary for surrounding systems to function! So, it’s often worthwhile to investigate before changing, especially if a behavior seems confusing.

Because humans occupy the cultural niche and many of our behaviors can be looked at through a cultural lens, Chesterton’s Fence can be applied to many different fields. Programming is a particularly fruitful field — whenever dealing with legacy code, it’s always useful to ask why the code behaves the way it does, even if it’s strange (for instace, being written in COBOL!).

Cultural Niche

Humans are uniquely successful due to our social learning ability.

References

Details

Humans are not the only intelligent animal; humans are not the only tool-using animal; humans are not the only social learning animal. However, humans are almost unique in their ability to socially learn across generations, slowly accumulating more effective tools, processes, thinking patterns, and organizations of relationships to solve day-to-day challenges, the sum total of which we call “culture.” Our biology is in fact evolved to promote just this ability, which is adaptable to nearly every environment; in a very real sense, our “niche” as a species is “anything we can learn to do from others.”

Cultural Evolution

Culture is subject to evolutionary pressures.

References

Details

Culture, as described above, ends up subject to evolutionary pressures. Three important points:

Deliberate Practice

Deliberately practicing skills can be the most effective way to improve them.

References

Details

Setting aside time (the famous “10,000 hours”) to deliberately practice individual skills can be the most effective way to improve a skillset. Indeed, as Andy Matuschak explores in “Implicit practice,” relying on the “implicit practice” provided by a discipline’s usual work can lead to skill gaps we’re not even aware of!

We should be careful taking this too far. David Epstein’s Range argues that breadth is a depth all its own — in many disciplines, the top performers are actually people that explored a range of topics or disciplines and didn’t get 10,000 hours of practice. In particular, he argues that deliberate practice doesn’t work for “wicked problems”, where feedback is delayed or hard to interpret.

Still, for many disciplines, from art to writing to programming to athletics, there are individual skills that are amenable to deliberate practice.

Digital Garden

Treat a personal website as a work-in-progress wiki, not a reverse-chronological blog.

References

Details

”Digital gardening” is a recent movement to treat personal websites more like always-in-progress personal wikis instead of a traditional reverse-chronological blog. That might involve publishing unpolished notes, updating pages when you learn more, linking heavily between pages, distinguishing between different classes of recency, and so on. This site is inspired by the principles of digital gardening, since I intend most pages to be “evergreen” and updated over time, although I don’t take the concept as far as many others do.

Dunbar’s Number

Stable human social groups are limited to about 150 people.

References

Details

Robin Dunbar is a fairly prominent anthropologist — I highly recommend his books Friends and Why Religion Evolved — but he is most famous for his eponymous number, introduced in “Neocortex size as a constraint on group size in primates”. He studied the average group sizes of other social primates and discovered a striking relationship between group size and neocortex size. If you plug humans into the resulting equation, you get “Dunbar’s number” of about 150, which is the maximum size of a stable social group, or how many “close” interpersonal relationships we can have. This has been borne out by repeated studies of human social groups, from militaries to churches to Discord channels. Social groups that grow much bigger than Dunbar’s number need more complicated organizational structures to make up for the fact that most members will not, and indeed cannot, know most other members.

Eternal September

Communities struggle to assimilate large numbers of new people arriving at the same time.

References

Details

Before 1993, the proto-web message boards of Usenet saw a yearly influx of new users around September, when new university students got access to Usenet for the first time. At first, these new arrivals would have poor etiquette, but through a mixture of shaming, mockery, trolling, and simple observation, they would socialize to the standards of Usenet. Around 1993, service providers began providing much larger numbers of users with access to Usenet, leading the forums to become overwhelmed with badly-behaved users (at least, from the perspective of old-timers). That led some to refer to this period as an “Eternal September.”

The broader lesson here is that communities, if they are to remain communities, need time to socialize new arrivals into the culture of the community. Otherwise, they risk becoming a place where strangers mostly interact with strangers, where there is no sense of shared norms and few repeated interactions that would encourage politeness.

Eyes on the Street

A feeling of safety in urban environments is provided by having many “eyes on the street”.

References

Details

What makes a neighborhood feel safe or unsafe? Why did so many of the housing projects of the mid-twentieth century fail so spectacularly?

One of the major arguments of Jane Jacobs’ Death and Life is that neighborhoods feel safe when they are more lively — when there are a wide variety of people going about many different activities at all times of day, providing many “eyes on the street” to deter wrongdoing. After all, most humans are naturally cooperative and willing to step in if something untoward is happening.

Good neighborhoods — like, say, San Francisco’s North Beach — support many uses, from children going to school in the morning to workers in the office during the day to diners eating out in the evening to revelers partying at night. Bad neighborhoods — like, say, San Francisco’s Civic Center — are oriented around a single purpose, like civic administration or corporate offices, and remain desolate at “abnormal” times. The mid-twentieth century housing projects of high modernism, like Le Corbusier’s “tower in a park” idea, were ineffective because they segregated different purposes.

When in a new neighborhood, pay attention to how many “eyes on the street” you can notice.

Illusion of Explanatory Depth

Humans think they understand familiar systems better than they actually do.

References

Details

How does a toilet work? A car? A computer? The economy?

For systems we’re familiar with, we tend to rate our understanding highly, but in practice most people can barely explain the basics of how a toilet works. This isn’t necessarily a bad thing — humans are great at compartmentalizing what we need to know and what we don’t. However, it can backfire when we forget that we don’t really understand things that we think we do.

Programming as Theory Building

Programming is the process of building theory of how a problem is solved, not the production of a program.

References

Details

Why is it difficult for a new team to take over development of a program? Why does documentation sometimes prove useless for understanding a system?

Peter Naur argues in this paper that programming is often misunderstood — it is not the process of producing an artifact that we call a “program”, but rather it is the process of the programmer developing a “theory” of how a particular problem can be solved using a program. In this view, the activity of “programming” just is developing this theory and then applying it, with the corollaries that:

Rubber Duck Problem Solving

Talking through a problem in as much detail as possible can help solve it, even if you’re just talking to a rubber ducky.

References

Details

One of the best problem-solving techniques from software engineering is to explain the problem and attempted solutions in as much detail as possible. It doesn’t matter whether you’re talking to another software engineer or even another person; you could even use a literal rubber ducky! The important part is to explain the problem in as much detail as possible, because it helps clarify your assumptions and will often reveal overlooked details.

Scenius

”Scenes” are often more inventive than individuals.

References

Details

Scenius is a concept coined by Brian Eno to describe the fact that groups of creative individuals in the same time and place — a “scene”, if you will — are often much more inventive than the individuals themselves. This is arguably the “micro” version of cultural evolution as described above. There are many examples, from literary groups like the Inklings or the Bloomsbury Group, to the invention of modern climbing at Camp 4 in Yosemite, to the flow of conversation at a really good dinner party.

Spaced Repetition

Memorize anything efficiently by reviewing at spaced intervals.

References

Details

Ebbinghaus’ forgetting curves show that the most efficient way to remember something is to test yourself at increasingly-spaced intervals. As a result, with the help of spaced-repetition software and careful choice of flashcards, you can efficiently remember virtually anything you choose to. Moreover, you can use memorized details as building blocks for more complex thoughts, allowing you to learn arbitrarily-complex topics with greater effectiveness.

Speed Matters

Working quickly is important.

References

Details

Working fast means you can get more done per unit time. But as James Somers points out in his essay, there’s two other benefits to working fast:

  1. You lower the activation energy of starting a new project — you’re more likely to start a project if you think it will be quick and effortless.
  2. Because you can get more done in the same time, you get more deliberate practice.