Software Topology
Software topology is so complicated.
By Jack Hales | 7 March 2024
The software topology is complex. This is a thought I've been thinking on recently, 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 that us developers resolve to treating problems as language problem as a heuristic, rather than system complexity-reduction for addressing technical debt.
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 often 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-people in order to wrangle complexity, and say "no" if it creates too much clutter and unmanageable state. This is easier said than done.