-
Notifications
You must be signed in to change notification settings - Fork 0
PatternLanguageOutline
This page sketches some ideas that may turn into a whole 'nother website. It outlines a value set, process, pattern language, and geometry for software development. The goal is to provide a complete, end-to-end view of the most effective way I know to create software.
As far as I know, nothing like this has been attempted before. Many pattern languages for software have of course been written, including:
- The Gang of Four patterns book
- Trygve Reenskaug's pattern language for MVC
- Jenifer Tidwell's HCI pattern language
- Matt Parker's Radically Collaborative Patterns for Software Makers: A Mini-Encyclopedia.
Various attempts have also been made at defining a set of values for software development—for example Kent Beck's Extreme Programming Explained. The Unix Philosophy, documented by Eric Raymond in The Art of Unix Programming, describes the values and principles underlying Unix programs.
However, I don't think anyone has yet tried to provide an end-to-end view.
Some software organizations say they have values. In practice, their values often sound more like principles to me: the ways they choose to work toward their values. The values themselves are left unstated.
For example, here are GitLab's stated values:
- Collaboration
- Results
- Efficiency
- Diversity, Inclusion, and Belonging
- Iteration
- Transparency
Now, these are just buzzwords chosen to spell "CREDIT" so perhaps GitLab can be forgiven for not having the perfect word choices here. But, on the face of it, most of these things just are not values. Inclusion and Belonging get close. Transparency, maybe. But the rest are means to an end. They leave us asking, "to what end?"
Your real values are not something you hang up by the door when you leave the office. They pervade your whole life. They underlie your vision of the world you wish was real, and they bend your actions toward that vision.
Here are my values:
- Belonging
- community, kinship, and connectedness to others
- Enthusiasm
- joy and awe
- Autonomy
- diversity and local adaptation
- Mastery
- getting better all the time
- Involved caring
- doing small things with great love
- Non-harm
- the thingier a thing is, the more right it has to keep on being thingy.
See how those, aren't, like, strictly work-related? That's how you know they're actual values, and not corporate buzzwords. The fact that this spells "BEAM IN" is pure coincidence.
- Shallow Hierarchies
- Levels of Scale
- Local Symmetry / Alternating Repetition
- Echoes
- Intensive Centers
- Boundaries
- Roughness
- Simplicity
- Not-separateness