<- Back

The role of domain knowledge in software engineering


Software engineering is often viewed as a highly technical discipline characterized by coding, algorithms and data. While technical expertise is essential, there is another critical factor that is often overlooked, which is domain knowledge.

Domain knowledge refers to the understanding of a specific industry or field, in which technology is applied. If a software engineer builds an accounting software, for instance, it is not enough to understand programming concepts such as functions, classes, if/else logic, loops or data types, it is also crucial to understand how accounting works in practice.

For this reason, software engineers are often required to dive deeply into a particular field and acquire relevant domain knowledge. This includes, on the one hand, theoretical knowledge from books and academic papers and, on the other hand, practical and tacit knowledge from professionals and practitioners working in the field.

Without domain knowledge, software may be technically functional, but it fails to meet practical user needs. Technical expertise allows engineers to build models and systems, but domain knowledge ensures that applications create real value.

My favorite example of this principle is the Bitcoin protocol and its creator Satoshi Nakamoto. Satoshi was neither an exceptional C++ programmer nor a world-class economist. Rather, he was a great systems engineer with sufficient domain knowledge in sound money and digital currency.

Domain knowledge helps explain why we distinguish between Bitcoin and crypto. Crypto is mainly driven by highly capable software engineers, but they often lack the deeper expertise in monetary theory. Bitcoiners, by contrast, tend to integrate both technical expertise and economic knowledge.

As a result, two fundamentally different perspectives emerge. In the crypto space, cryptocurrencies are often treated primarily as technologies that require constant innovation, feature creation and rapid iteration, just like smartphones, laptops or cars. Within the Bitcoin community, however, Bitcoin is viewed first and foremost as a monetary system, which has different requirements.

Throughout the last few millennia, for instance, gold did not emerge as money because it was constantly upgraded. To the contrary, it became money because of its stability. Due to its chemical characteristics it does not rust and due to its scarcity it has a very low supply growth rate. In other words, it was gold's structural and monetary stability that made gold suitable as money.

The crypto space often dismisses Bitcoin as "dinosaur technology" because Bitcoiners are very hesitant to update the Bitcoin protocol and reluctant to introduce new features. But Bitcoiners are well aware that money requires trust and stability. Constant protocol changes can undermine confidence and weaken the reliability that monetary systems require.

Bitcoin does not need endless new features. Its primary function is to transfer value across time and space in a decentralized, secure and permissionless manner, which is already a huge deal.The world does not need another PayPal, it needs a neutral, honest and incorruptable monetary network that can operate without centralized control.

Satoshi was able to bridge the gap between distributed networks, cryptography and the monetary use case. Without sufficient domain knowledge he would likely not have succeeded.