How Hard is it to become a Smart Contract Developer?

TL;DR — It is not that hard to become a half decent smart contract developer.

There is an extreme amount of excitement around blockchain projects for investing, innovation, and development. The amount of capital flowing into the space, mostly through ICOs, has put blockchain and smart contract developers on a pedestal. If that much money is flowing towards it, it must be extremely hard to develop blockchain applications.

I am here to tell you that this is not the case! I went from having no coding experience in March 2017, to becoming a smart contract developer and completing my first decentralized application (dApp) 6 months later.

The amount of money and excitement in the space is driving up the demand for Smart Contract developers. Because of this they can demand very high salaries. It is easy to pay a developer a high salary when there is so much money flowing towards ICO’s. This ICO raised $35 million dollars in a 30 seconds, and this year ICO fundraising has surpassed early stage VC funding.

I am going to explain how smart contract development isn’t that much harder than learning to code other languages, and that there are major benefits to committing yourself to learning how to develop on the blockchain.

A few Caveats Before we Begin

I want to make a few distinctions though. I am talking about smart contract development only, with a focus on Ethereum and Solidity. I am not talking about building out entire blockchains from scratch. To build out a brand new blockchain like the developers of Bitcoin, Ethereum, Monero or Zcash did is wayyyyy more difficult that building a dApp on Ethereum. All of the code and the architecture built out for those are built out by expert programmers, cryptographers, and computer scientists.

I also want to make a distinction between being a good smart contract developer and a beginner smart contract developer. I am not saying you can become a good smart contract developer from scratch in 7 months. But the skills are in such high demand that even a beginner smart contract developer can earn a very high salary.


Why should you learn it ?

There are many reasons why becoming a smart contract developer is a great choice:

  • It pays extremely well. The supply of capital into the space, and the amount of excitement are causing salaries to be sky high. This will continue for some time, as the resources to learn smart contracts are very limited, and right now you get good at it through sheer perseverance. You’ll have to get used to spending 2–3 hours trying to fix a small bug because the literature on the web isn’t that helpful, and there aren’t as many stack overflow question answered as there are for a more established language. You’ll have to make the questions yourself, and they can often go unanswered. Solidity is a new language, and the Ethereum Virtual Machine (EVM) is still in development as well.There are issues with both that make a developers life hard. Over time these will be ironed out but right now it can be a lot more frustrating than developing with a language like Javascript.
High Salaries, lots of dollar bills
  • A bizarre thing happening in the blockchain space is that almost all of the good smart contract developers who have been doing it for over two years are wealthy beyond their wildest dreams. This has happened because they almost certainly bought cryptocurrency when it was really cheap (Ethereum’s ICO was priced at about $0.30 per ether), putting the majority of them in a situation where they don’t have to work to live. This means the good devs can be extremely picky, and don’t have to settle for low offers. The exciting blockchain companies are attracting the really good smart contract developers because of their vision. This leaves open a lot of fin tech and banking companies that are stuck offering huge salaries to people with less than a year of smart contract development work.
  • It isn’t technically more challenging that most coding languages. To develop basic smart contracts, or decentralized applications (dApps), doesn’t required you to have a background in cryptography, game theory, protocol design, distributed computer networks, or anything of the like. You just need to learn how to use the API’s in order to read, write, and change data on the blockchain. It is similar to how you can be a web developer, but do not need to understand how HTTPS or TCP/IP works. You just need to be able to build applications that use the API’s to interact with the protocols.
  • You can get great investing insights into the landscape of blockchains and tokens, and as a result make a lot of money investing on the side. I can say that my ability to pick out scammy, crap ICOs has improved significantly since I have actually learned how to determine what good smart contract code looks like. It has also taught me a ton about investing because it is so volatile. I’ve learnt more in a few cycles of crypto crashes and rallies than in years of watching the stock market. The crypto market is on steroids.
  • I have gotten multiple job offers and have met a lot of new people just because I can develop smart contracts. I’ve got offers to do react work and web development work for projects involved in the crypto space, even though I am by no means an expert react developer. This is because being able to develop smart contracts separates you out from the crowd and shows you are committed to hard work. I’ve seen recruiters eyes light up when you tell them you are a smart contract developer. They are fully aware of how much they can make for connecting a good smart contract developer to a company in need.

How is It Different From Other types of programming?

The truth is it not not much different from any other type of programming, but there are a few things to keep in mind:

  • If anything it is more like hardware development than software development. Hardware development has to be very precise and accurate before you release your product. There is rigorous testing and prototyping done before any product is sold to the public. Compared to web development, where you want to move forward as quick as possible, get people testing the product, and send out version 1.1, 1.2, and 1.3 all in one month. Fail forward and fail fast.
  • When you deploy smart contracts to a live network, if there are bugs in your code you could lose a lot of people’s money. This is very much like a hardware recall. A hardware recall costs the company huge sums of money, takes a long time to fix, and can tarnish the reputation of the manufacturer. Similarly, a bug in a smart contract can lower the value of the token, lose the owners of the token money, and lose reputation in the developers behind the token.
  • A huge smart contract bug in a well known token on Ethereum named Augur was found recently. Luckily this bug was caught by a team of professionals, and no money was stolen, but it is small subtleties like this that can cause massive loss of value on the blockchain.
  • You have to learn a new way of thinking when coding smart contracts. You need to think from the perspective of an adversary trying to hack your code, and build defenses and preventative measures in order to freeze the contract if something goes wrong. You need to think how to incentivize the users of your smart contract to use it appropriately, as well as provide a benefit to the network. You have to determine if there should be an owner of your smart contract who can reverse transactions in case of a bug. Giving that power to the owner comes with a big trade off because all of a sudden your smart contract is much less decentralized, as the users of the network have to fully trust the owner.

Some Warnings

There are some warnings to be mentioned before diving full force into becoming a smart contract developer:

  • It is possible that smart contract developer demand could go down in the short term if a bubble pops (I’m looking at you, ICO’s) in the crypto space. The demand for tech talent dropped in the short term after the dot com bubble, and there were even drops in enrollment for computer science degrees. However the long term underlying concept of coding trust and decentralization onto blockchains will be very valuable in the future no matter what. But to drop everything, quit your job, and pursue blockchain development might not be the safest path, as it is high risk, high reward. Basically just don’t put all your eggs in one basket. Put maybe half of your eggs into the blockchain basket.
  • Solidity might not turn out to be the defacto language for smart contract development, but it has a good head start. It also isn’t the only place to build smart contracts or dApps. Look into Blockstack. They have some very specific differences in their platform that allow for a different approach to to designing dApps. There are many other competitors in the smart contract space that are competing as well. However the principles behind smart contracts will carry over to any blockchain or smart contract language, so it is important to learn them in depth, and not just strictly study Solidity.

Summary

There is no need to be intimidated by learning how to code smart contracts. It is just a new way of thinking and writing code to help humans interact and share trust and value over the internet. You need determination more than anything else to succeed, and right now the market is begging for more smart contract developers. If you decide to buckle down and put in the time, you’ll be rewarded with high pay and your skills will be in high demand.

If you have any questions please ask in the comments or reach out on twitter @davekajpust!