One of the principles of Social Architecture is that the way we organize is more important than who we are.

Dirkjan Ochtman drew my attention
to the definition of software architecture in Wikipedia: "the set of structures required to understand the system, which combines the elements of software, the relationship between them and their affiliation." For me, this empty and cyclical chatter serves as a good example of how humiliatingly little we know about what is really important when creating a large-scale software architecture.
Architecture is the art and science of creating large artificial structures used by man. If I understood and successfully applied over thirty years to create increasingly large software systems, it is that
software is all about people . Large structures themselves are meaningless. What matters is how they function for their use by humans. And in software, the human begins with the programmers who make it.
The main problems in software architecture lie in human psychology, not technology. Our psychology can affect our work in different ways. I can give examples of how a group of people become more stupid as it expands, or when they have to work, being separated by a huge distance. Does this mean that the smaller the team, the more effective it is? How, then, does a large global community like ZeroMQ manage to work successfully?
')
The ZeroMQ community was not accidental. His design was purposefully developed - my contribution to those early days when code appeared in the attic in Bratislava. The development was based on my scientific pet, “Social Architecture,” which
Wikipedia defines as “consciously developing an environment that encourages the manifestation of certain patterns of social behavior in order to achieve a goal or goals.” My definition is more specific: “the process or product of planning, developing and creating an online community”.
One of the principles of Social Architecture is that the
way we organize is more important than who we are . The same group, organized differently, can produce completely different results. We are like peers on the ZeroMQ network, and our communication patterns significantly influence our behavior. Ordinary people with established connections can surpass a group of experts using bad behavior patterns. If you are a developer of a large ZeroMQ application, you will have to help others find the right collaboration patterns. Do it well, and your project expects success. Make it bad and your project will fail.
And so, here is my short list of the psychological elements of Social Architecture:
- Stupidity: our mental tire has limits, so at some point we can all be stupid. The architecture should be simple to understand. This rule number one: simplicity is more important than functionality, always. If you can't get into the structure on a gray, cold Monday morning before drinking coffee, then it’s too complicated.
- Selfishness: we act only for selfish motives, so architecture must create space and opportunity for selfish actions that will benefit everyone. Selfishness is often indirect and implicit. For example, I can spend a few hours explaining something to someone, because it may come in handy for me later.
- Laziness: we make many assumptions, which then turn out to be incorrect. We rejoice when we can get a result with minimal effort or test an assumption quickly, so the architecture should provide such an opportunity. Those. it should be simple.
- Envy: we are jealous of others, which means that we will overcome our stupidity and laziness, just to prove that they are wrong, and that we can surpass them. Therefore, the architecture should provide space for public competitions, with clear and clear rules for all.
- Fear: we do not want to take risks, if there is a chance that we may look stupid. The fear of defeat is the main reason that people become conformists and follow the majority, even if it is mistaken. The architecture should take care that people can simply and inexpensively conduct experiments covertly, achieve success without punishment in case of failure.
- Interaction: we will make efforts, spend money, but we will punish you for cheating and enforce fair rules. The architecture should establish strict rules that will indicate how people work together and not what they work on.
- Conformity: we joyfully succumb to conformism, because of fear or laziness, i.e. if the behavior patterns are good, clearly stated and documented, and mandatory, we will naturally choose the right behavior every time.
- Pride: we are very worried about our social status, and we will work hard, just to not look stupid or incompetent in public. The architecture should ensure that every part of our work is signed, so that we sleep in bed at night and worry about what others say about our work.
- Greed: we are extremely economic animals (see selfishness), so the architecture should economically stimulate us to spend resources on achieving results. Let it be grinding our professional skills, or literally getting money for certain skills or components. No matter what, but the economic incentive is required to be present. Think of architecture as a market, not as an engineering structure.
These strategies are suitable for both large and small organizations or teams.
Translation of the book "Social Architecture":
about the author“Unfortunately, we do not choose death for ourselves, but we can meet her with dignity so that we will be remembered as men.”- the movie "Gladiator"

Pieter Hintjens - Belgian developer, writer. He held the position of CEO and chief software designer at
iMatix , a company that produces
free software , such as the
ZeroMQ library (the library takes care of some of the data buffering, queuing, connection establishment and recovery, etc.), OpenAMQ,
Libero ,
GSL code generator , and the
Xitami web service.
Much detail here:
Thirty five years I, as a necromancer, inhaled life in dead iron with the help codeIt's time for my last article. I could write more, there is time, but then I will think about other things: how comfortable it is to sit in bed, when to take painkillers, and about people around me.
... I want to write one last model, the last protocol, which is dedicated to how to die, having some knowledge and time in store. This time I will not format the RFC. :)
Death report
Peter Hinchens websiteWikipedia articleThoughts and ideas of Peter Hinchens on Habré:
About the book translation projectI, with the support of
Filtech-accelerator , plan to publish on Habré (and, perhaps, in paper) the translation of the book
“Social Architecture” . IMHO, this is the best (if not the only adequate) manual for managing / building / improving communities focused on
product creation (and not on mutual grooming or “worship” to the leader, sports club, etc.).
Call to actionIf you have projects / start-ups with a high share of technologies aimed at public benefit in the first place and to receive profit as an auxiliary function (for example, like Wikipedia), write in person or
register for an accelerator program .
If you send links to articles, videos, courses on the Coursera on managing / building / improving communities, focused on
creating a product , with me chocolate.