← Back
Software Topology
7 March 2024
The software topology is so complicated. This is a thought I've had recently, insofar as it feels like there is always a compromise with whatever technology is used to solve a problem.
There are so many trade-offs, but proficiency seems to enable the ability to smooth the edges as needed, and work with the clay (the language) in order to benefit the general product.
The further difficulty is that there are so many dimensions to software:
  • Language
  • Medium
  • Userspace scope
  • Security
  • Infrastructure
  • Refactoring
  • Cooperation and Teams
  • Time (adds dimensionality to all above dimensions)
There are more and more that I'm sure I'm not addressing right now, but these exist. Some notable mentions would be:
  • Paradigms and Patterns
  • Integration Platforms
  • Cloud Platforms (above: Infrastructure)
  • Operating Systems
These all accumulate, and I feel as if developers (and myself) resolve to treating to problem as a language problem, rather than a meta complexity-reduction problem for solutions.
The theme of all of the above technical factors is that they have a science, best practices, and common combinations which developers can use as heuristics to integrate a good communal solution.
The big one I have not mentioned, the big one which is the source, rather than the symptom of the complexity, is the Problem. The Problem, and its drivers behind it.
The Problem is so complicated, and creates so much complexity, that it lives in human behaviour land. The tech world strives for platonicity, whereas the Problem is the contact with the real world of nuance, complexity, recursion, feedback loops, false signals, lack of understanding, ad infinitum.
One of the most powerful tools for reduction of complexity is not to pick the right framework, but to be able to dance with business comrades in order to wrangle complexity, and say "no" if it creates too much clutter and manageable state. This is easier said than done.