1 min read


Typically, with software, you only hear about projects that are over-engineered. Too many features. Code is too fancy. High level of effort to solve a fairly simple problem.

What's not obvious from the outside is that (at a certain point) app complexity is inversely related to code complexity...

Let me explain. Adding another button, feature, or widget to your app is usually done because you've made a decision. You wrote some code and added the thing. For your users, too many things starts to look "over-engineered."

Choosing not to add features, and instead build a highly flexible system for future development is way harder. The app looks under-engineered from the outside (minimal features/decisions made), but the code usually explodes in complexity to handle this flexibility.

The weird thing is that blockchains are a fairly complex undertaking to begin with. So, when the Koinos Group decided to build the most flexible blockchain framework ever built, I would think that would make the effort nearly impossible. It turns out that a lot of the complexity of existing blockchains came from over-engineered decisions. Examples:

  • Building Solidity and the EVM instead of using existing languages and WASM
  • Building a hierarchical multisig authority model instead of letting users write their own authorizers
  • Cramming all your functionality into the core blockchain instead of pushing those decisions out to smart contracts

The decisions made for Koinos are intentional and elegant. By under-engineering the Koinos framework (which took a lot of effort, don't get me wrong), they built a highly flexible framework where anyone can make whatever decisions they want.


P.S. This flexibility required more effort in the short term, but it will pay off as the blockchain evolves with community demands and decisions in the future.