Dirkjan Ochtman pointed me to Wikipedia’s definition of software architecture as “the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.” For me, this vapid and circular jargon is a good example of how miserably little we understand what actually makes a successful large-scale software architecture.
Architecture is the art and science of making large artificial structures for human use. If there is one thing I’ve learned and applied successfully in 30 years of making larger and larger software systems, it is this: software is about people. Large structures in themselves are meaningless. It’s how they function for human use that matters. And in software, human use starts with the programmers who make the software itself.
The core problems in software architecture are driven by human psychology, not technology. There are many ways our psychology affects our work. I could point to the way teams seem to get stupider as they get larger or when they have to work across larger distances. Does that mean the smaller the team, the more effective it is? How then does a large global community like ØMQ manage to work successfully?
The ØMQ community wasn’t accidental. It was a deliberate design, my contribution to the early days when the code came out of a cellar in Bratislava. The design was based on my pet science of “Social Architecture”, which Wikipedia defines as “the conscious ...