2021 marked a milestone in my engineering career as I entered the world of blockchain development. This blog post is for those who are aiming to do the same. I want to tell you about the resources that I found helpful along my way. I’ve been watching the blockchain space since 2017 and could not resist the urge to become a part of it as a BUIDLer. Since about 2018, I started to dive deeper and put substantial effort into it. As it always happens in such a case, I began to see more and more opportunities in front of me. Here’s what it took.

Connections

The fastest way to separate the signal from the noise when entering a new field is to learn what the brightest minds are occupied with. Connect with the best developers you can find and discover what they are currently building. It would probably be what matters the most right now. For example, I started with simple dApps and token tutorials. At the moment of writing, after following the recent developments in the space, I am actively learning about a revolutionary cryptographic technology called Zero-Knowledge Proofs (ZKPs).

Twitter is a great place to get inspired by what the key figures in the field are doing. However, it is not as personal and interactive as you might need. You need some fellow devs who can share their experience with you. I was curious enough to start attending various blockchain events since about 2018, when I was still in Prague. Later, after I relocated to Taiwan, I discovered the local blockchain community here, in Taipei. At the first event I attended there, I met Cartesi and DApp Pocket folks. Then Crosslink 2019 followed - a big conference that featured some of the most brilliant blockchain researchers and developers from around the world. There, I also attempted at a capture-the-flag competition. It was based around Ethereum smart contracts security. Through Crosslink, I was lucky to learn about the Taipei Ethereum community that organized some regular events for developers. Through it, I also discovered the Papers We Love study group. To my surprise, it turned out to be quite cryptographically-inclined. I’m very thankful to these communities for making me aware of ZKPs.

Learning your tools

I am a massive fan of learning by doing. It might not be appropriate for everyone, but I strongly encourage you to get your hands dirty as soon as possible to stay excited about what you’re learning. I tried a more “academic” approach to study smart contracts a couple of years ago and was very disappointed. I took an online course on Ethereum smart contract development on one of the e-learning platforms. The dude was basically reading out the Ethereum node RPC API reference, which made me so bored that I abandoned the course. I think that there’s a much more straightforward path to begin your journey as a blockchain developer. However, as the title says, you should be at a good enough starting point to follow this path. In my case, the starting point was me:

  • having the understanding of how blockchains and smart contracts work on a level that allowed me to explain it to fellow software engineers and to be able to answer questions like “How does mining work?”, “What is a smart contract?” or “What’s the difference between tokens and Ether?";
  • having tried to write some Solidity slightly more advanced than hello world level;
  • having multiple years of software engineering experience (however, not in any of the technologies used in Ethereum dApps development).

First of all, I needed to bridge the gap between the bare smart contracts and usable, real-world dApps. That meant learning to build web frontends. At that moment, frontend web development for blockchain was dominated by React JS. Before taking a deeper dive into it, I found a great learning resource that helped with a smoother transition from pure smart contracts to full-stack - CryptoZombies. Throughout the tutorial, you’re building a blockchain game similar to the (in)famous CryptoKitties. You start with smart contracts in Solidity and end up writing frontend JS. The best part of it is that all the coding happens in an interactive environment in your browser. Later, I found another excellent crash course that helped me deeper understand React JS. It was not related to blockchain and was focused entirely on the frontend development of a simple ToDo list app. As it turned out, what I learned was already enough to start contributing to real-world projects. However, after joining my first team, I didn’t stop learning and found many other helpful resources for beginners. To sum it up, here’s the list of all of them, subjectively ordered by increasing complexity:

  • CryptoZombies - interactive online tutorial on building a blockchain game;
  • React JS crash course - helps you to familiarize yourself with the most popular dApp frontend framework;
  • NFT marketplace tutorial. NFTs were all the hype in 2021 due to their digital art use case, and it still goes on. The use case I was prototyping was NFTs as certificates of ownership for physical goods.
  • Scaffold-ETH - a quick-start dApp template geared more towards rapid prototyping. It allows you to build a dApp in seconds and immediately start playing and tweaking.

Battle-testing

In late spring 2021, I finally got a chance to apply all I had learned. Anton Cheng, one of the active Taipei Ethereum members, started a side project (HODL Protocol) and invited everyone to collaborate. After I joined, I realized that I was still missing some knowledge of tools and techniques used in the real-world dApp development lifecycle. They are often omitted in beginner-level tutorials because they are not essential to get you started. Here are the ones that I found the most important:

  • Graph Protocol - an additional API layer on top of your smart contract that simplifies querying the data not directly present in your smart contract state variables.
  • Smart contract unit tests enabled by Hardhat. The most fascinating thing for me here was an in-memory blockchain being created for the duration of the test and behaving identically to a real one. It allows covering virtually all your code with tests, and our project could boast 99% test coverage.
  • Slither - a static analysis tool helping to improve smart contract security. A nice thing is that it not just highlights the anti-patterns in your code but also explains the security risk they are carrying and how you could fix them. Security is paramount when deploying to mainnet and managing real user funds. A project that gets to this stage would probably undergo a human audit before deployment. Even though machine analysis cannot entirely replace the audit, it helps polish your contracts enough to prepare for it.

Conclusion

It might look like a lot to learn, but it won’t seem challenging if you’re armed with enough curiosity. Blockchain space is still nascent and evolving quickly, so, from my experience, being in a state of permanent learning is the only way to keep up with it. I hope that my story will inspire you to set off on your blockchain development journey and build something exciting!