Skip to main content

Hayek on Complexity and Knowledge

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