I am a web developer. Last november, with Talao, I dove into decentralized applications development on the Ethereum blockchain. This article is about my findings, my feelings, my concerns and some tips for web developers that are interested in building dApps.
The biggest differences
We, as web developers, have taken for granted that anytime, we can push a new release of the product in order to fix bugs and add features. But that's not the case at all in the blockchain world. By nature, anything deployed on a blockchain is immutable, or at least immutable on all points that were not designed as evolutive from the beginning. So is an Ethereum smart contract. The answer to that fundamental problem is to proxy the contracts: the "mothership contract" just points an "editable" address of the "worker" smart contract. So we can deploy a new "worker" smart contract and "install it" by updating the address in the mothership. In reality it has to be even more complex and we are far from a standard, despite of the many ongoing EIPs (Ethereum Improvement Proposal). My conclusion is that the main contracts MUST be rock-solid. The reason I feel confident in my work with Talao is its close collaboration with Blockchain Partner and DAO Stack.
No updates = no security fix
You COULD "push a new release" to fix a major security vulnerability and avoid loosing everything in minutes. But you CAN only if you have proxy contracts and if the vulnerability is NOT IN THE MOTHERSHIP. If it's in it, everything is lost. It's the same point as the previous one, but it deserves a paragraph: hundreds of millions of dollars were stolen in such attacks.
I remember the days in which we were fighting just to render an exact view the same on the different browsers. And I remember painfully my stupid will to use CSS at the time everyone was still using tables for layout. I did it, but at which cost? Never again. On the Ethereum front: very good news! Since things are NOT DRIVEN BY MAJOR COMPAGNIES, everything is clear, clean, collaborative and open. Intelligent.
The blockchain is stable. The only problem is that all the tools are a moving target. Take this Web3.js version, it won't work easily with that Ethereum browser / extension. Take that blockchain node tech and version, your Truffle deployments and tests won't work. Stabilize your environments and fix your devs, then you need a new feature and you have to start stabilizing your stack again.
This problem is shared by many other techs than blockchain. For instance, I'm originally a Drupal developer. Drupal 8 is a moving target and you have to keep up and surf the waves.
Some developers do not like moving targets. But I do. This is what makes us pioneers and this is what keeps me interested in developing.
- Given the fact that TRANSACTIONS CAN TAKE MINUTES to be mined
- Given the fact that any "write" action by an user requires him to SPEND A LITTLE BIT OF MONEY
Then: the whole user experience has to be re-designed. For a web developer I find it very difficult because we are used to instant responses and to progressively drive users to pay for a "good reason", something they want. Most importantly, users won't love the blockchain if "it is slow" (because they have to wait the mining). And they will hate it if they have to pay to change their username.
I love the decentralized web and I will go on working on its techs and businesses. I believe that the future is in hybrids of centralized and decentralized apps: some things must be on the blockchain, others must be centralized.
If you are a web developer and love getting on new techs, you won't have many difficulties to enter the dApps development. Because of the asynchronous nature of blockchain, it will be harder for a PHP / Drupal developer than for a NodeJS / React developer to get into blockchain. In any case, if you love what you do, you will succeed.
Solidity is not difficult at the first glance, and you will soon create your first smart contracts, factories, proxies maybe and so on. But my advice is : remember where you are coming from. All top experts in smart contracts development are getting their code reviewed by multiple independent experts. You can not do less and you should do more.