A remarkable chain of thinking sparked while reading
Object Thinking has lead me to a new thinking. Simple phenomena can be easily classified, studied and repeated. Think levers, steam engines, motion of planets. However, complex systems (the human body, computer systems) benefit from empirical research and study.
This is not really new. The question is, where is the boundary between complex and simple? I think that this border only exists in the human mind. In fact the border is movable and depends on the individual mind.
Nothing is complicated to Nature (the universe). Everything just is. Confusion and complication only arise in the human mind while trying to understand the universe.
Complexity is a function of our capacity to assimilate, store and process data. If we were suddenly twice as smart, some complicated problems would seemingly become simple problems. The problems themselves did not change, only we changed.
For software developers, it means that we struggle against complexity that is often artificial and even worse, is often of our own making.
This means that managing complexity and striving for simplicity is an important function. We can't just upgrade our wetware. Humans have a limit (at least for the near future). So we can only manage our abstractions and our creations. We have to tend towards simplicity both in ordinary life (index funds over actively managed funds) and in software creation.
This would tend to suggest using tools that provide the most straight forward implementation route. We should look for tools that allow for conservation of complexity.
If I as a sole developer running my own business can push complexity somewhere else (using a framework from a reliable source) then shouldn't I do that?
Does that mean that I must avoid unproven or untested frameworks? The complexities haven't been discovered so I wouldn't know how to deal with them.
Interesting. It's at least food for thought.