16 years ago, my teammates and I built software for big internet properties. We created a single digital space (website) bounded by a piece of software (for example, Drupal.) Nearly everything was constructed around the relationship in spacetime between user and page.
Meanwhile, the internet as a knowledge and information system was emerging around us. Information became ubiquitous and context dependent; everyone outgrew their “website”. We began restructuring space and time (not one space, not “page request”) using asynchronous software and micro services, event-based cloud native platforms and hypermedia data structures.
In the world of “digital transformation”, software is becoming systems. Unfortunately, we don’t think in systems. We are trapped by the way we think, organize and communicate. Designing and delivering systems require reorganizing our mental models and communication structures.
My focus shifted from software to relationships between software. And the patterns needed to make good relationships. Quickly, I realized that the relationships between people mattered as much as the relationships in the tech.
Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.— Melvin Conway, aka Conway’s Law
Yes, we need skills in cloud-native architectures, Kafka, Kubernetes, GoLang, Terraforming, etc. But those are not the key to our success. We also need to transform how we think together. Otherwise, we will build the same old things with fancy new tools.
The linear way we’ve been taught to think — predictable, rational, repeatable, top down, dualistic – primarily concerned with control — doesn’t help us design systems or resolve systemic challenges. It doesn’t support workflows we need for systems. For systems, we are primarily concerned with how relationships produce effects, and this is much more complex than it sounds.
This participatory talk covers essential nonlinear skills and practices for IT professionals. Skills we might not think of as “IT”. Practices that will help us navigate from software to systems:
- Craft conceptual integrity
- Cultivate self awareness
- Respond rather than react
- Build systemic reasoning
- Make art(ifacts)
- Synthesize knowlede, experience and sound judgement into decisions based on valid reasons