In Software Development, knowledge acquisition and transformation on one hand, and internal and external complexity, on the other hand, are two interconnected and inseparable aspects of the same endeavour.
F. Hayek, a towering figure in economics, and a major member of the Austrian School of Economics, put it simply.
βπ»ππ πππππππ ππππ ππ πππππππππ ππ ππ π ππππππππππ ππ πππ πππ ππππππ ππππ ππππππ ππππ πππππ ππππ ππππ πππππππ ππππ πππ π πππππ. π»π πππ πππππ ππππ ππππ πππ ππππππππ ππ πππ ππ ππππ ππ πππ ππππ πππ ππ π πππππππππ πππππππππππ, ππ πππ ππππ ππππππ ππππ ππ πππππππ ππππ ππππππ πππ ππ, πππ ππ ππππππππ ππ πππ πππππππ, πππ ππ ππππππππ ππππ πππππππππππ ππ π πππππππππππππ π ππππππππ πππ ππππ π π πππππππ ππ πππππππππ ππππ ππππππππ ππππππ πππ πππππππππππ ππ πππππππ πππ ππ. πππ ππππ π πππππππππππππππ ππππππππ ππππ π ππ ππππ πππππππππππ πππππ πππππ ππππ πππππππ.β
It is true and insightful on multiple levels. To illustrate: take the way software architectures are generally built: there's an hidden assumption that the future is made of a sequence of static "images" and as a result the architecture/structure reflects that perspective. Unfortunately, there will always be an event or a stressor happening in the environment that the architecture was not designed for, forcing you to make a decision that is not completely under your control. Generally, when this hits, it is painful, and will likely break your architecture (or put your system out of balance).
The reality is, as alluded by Hayek, the environment your software will be deployed is socio-economically complex and unpredictable.
This is what makes building software very hard (and very human):
βEmbedding flexibility in the functional space (I called this forward thinking mode) to accommodate change
βEvolving the architecture based on unpredictable usage patterns (backward thinking) by stacking residues (see Residuality Theory by Barry O'Reilly).
No advanced AI can help here, sorry. Apart from the desired efficiency gain we demand from technology.
Comments