Please ‘dumbify’ Dapp development

Today, the creation of decentralization applications (Dapps) is a daunting effort. In reality, the knowledge effort and the learning curve is steep even for those that understand the basics of programming applications in the real-world. So what’s different about launching a smart contract-based Dapp?

One reason why the use of blockchain-driven applications have not exploded as initially thought is because the knowledge capital needed to launch a Dapp today is very high. At the time of writing this article, I know of no mass-proliferated use case of a blockchain-based Dapp used by the wider public. Dapp development is a niche field, requiring specialized knowledge of Dapp architecture across multiple programming languages, and requiring a fundamental understanding of the underlying blockchain itself (which is not a trivial exercise).

A great analogy that a friend observed is that right now the world of Dapp development and smart contract development is very much where website design was back in the 2000s. The upfront knowledge requirement for the ‘average not-super-technical-person’ was tremendous back in the day. In all likelihood to create website in the early 2000s you would have needed to know: HTML, CSS, JavaScript, and some server-side hosting basics. If you wanted to do anything fancy: you might have employed a platform like Macromedia Flash or Macromedia Dreamweaver and perhaps employed a suite of Adobe-based image editing products. All in an effort to create a website!

Now things have changed tremendously — I recently created a website from scratch on a self-hosted Wordpress instance via a template in the span of a day. The hardest part being not the actual website coding or design — but filling up my website with content!

The world of Dapp development is very much similar to website design in the 2000s. Right now there is a high upfront knowledge requirement and a tremendous amount of friction between development regimes.

Hype Cycle & Adoption Rates

If I had to make an educated hypothesis as to where in the Hype Cycle blockchain-based Dapps are right now — I would say that we are trending downward after the so-called Peak of Inflated Expectation. In terms of technology adoption rate, one could argue that we are still somewhere between the phase of the Innovators and Early Adopters. In the end, any hindrances that are seen in the fundamental development of Dapps will result in the ultimate hindrance of the mass-adoption of blockchain-based use cases.

Technology Expectation Cycle and Adoption Cycle

There are other factors at play — but I would argue that once you make technology easy enough to understand and place it in the hands of more and more users — network effects will begin to proliferate and we will hopefully get to the Slope of Enlightenment.

Knowledge Capital Needed for Dapp Development

To construct a Dapp powered by Ethereum smart contracts (as an example), you will need to:

  • Understand the central tenants of blockchain (decentralization, disintermediation, and distributed ledger — i.e. the 3 D’s).
  • Understand the underlying mechanisms behind the Ethereum blockchain and the Ethereum Virtual Machine (EVM), including the concept of the Ethereum State Transition Function as it relates to accounts, transactions, and state variables.
  • Understand how participants interact in the Ethereum ecosystem.
  • Understand the interactions of externally owned accounts and contract accounts as well as their structure.
  • Understand the structure of transactions and messages.
  • Understand the programming, form, function, as well as language of a smart contract based in a higher-level programming language like Solidity, understand how accounts interact with smart contracts via transactions and the data contained therein.
  • Understand best practices surrounding smart contract development and ensuring the smart contract is free from unintentional leakage or fundamental logic-faults via executing a test regime.
  • Understand the Dapp development stack including blockchain server, Dapp architecture, APIs, and the use of IDE’s like Truffle IDE — as well as the creation of a web front-end in order to facilitate easy user interaction. Typically a Dapp has a web front-end and a blockchain back-end and code connecting the two.
  • And fundamentally underlying all of this is the ability to decompose a problem for which a smart contract would be advantageous in order to code it into state variables and functions.

None of the above points are trivial to understand. And I probably have glossed over many steps in between. The whole point is to illustrate that as it stands right now, Dapp development is by no means ‘easy’.

My aim is to make Dapp development understandable to the ‘average not-super-technical-person’ — and slowly over the course of a few articles, share the salient points involved in the creation of smart contract-based Ethereum Dapps.

Stay tuned my friends!