Can you master Solidity in 30 days? No, you cannot.

Can you learn about the basics and get started with the development of real-world projects using Solidity in 30 days? Yes, you sure can, and this article aims to provide you with a roadmap following which you can learn Solidity in a much more efficient way.

💡 Learning Hacks

“I realized that becoming a master of karate was not about learning 4,000 moves but about doing just a handful of moves 4,000 times.” — Chet Holmes

Before we proceed further, let’s talk about some hacks that I use for learning any skill or programming language in a faster manner.

  • Before going to bed, recite what you learned for 5 mins.

  • Don’t push yourself beyond your capacity, always keep in mind that excellence can only be attained when it is organic.

  • Teach someone else (or just pretend to) what you learned.

  • Get proper sleep, research shows that sleeping between two learning sessions greatly improves retention.

  • Take notes by hand (Yes, I agree that this might sound anti-digital, but believe me, it improves our knowledge retention).

  • Stay hydrated and exercise regularly. A healthy mind breeds a healthy body, and vice versa!

🏷️ [Day 1 - Day 5] Javascript: The Starting Block

We all have different levels of experience and familiarity with programming languages. Now that you are here, I assume you are already familiar with basic Javascript syntax and the Object-Oriented paradigm. If you are not, I would suggest you should learn JavaScript before starting with Solidity. You don’t need to learn A-Z of JavaScript. All you need for getting started is a basic understanding of JS syntax and object-oriented programming.

JavaScript Fundamentals

🏷️ [Day 6] Frameworks

We learned javascript and now we have a fairly decent understanding of object-oriented programming as well. What next? Can we start learning solidity now? Yes, we can.

As we are just getting started with Solidity, I would suggest you use Remix IDE for writing and compiling solidity code for now. As we gain more experience and familiarity with Solidity, we will start using a more robust Dapp development framework (such as Truffle, Hardhat, Dapptools, etc) because building a full-fledged decentralized application requires different pieces of technologies, and software frameworks include many of those needed features.

Even though we are not going to use any of these frameworks as of now, but we need to know what different frameworks are available to build dapps.

  • Truffle - A development environment, testing framework, build pipeline, and other tools.
  • Hardhat - Ethereum development environment for professionals.
  • Brownie - Python-based development environment and testing framework.
  • Embark - A development environment, testing framework, and other tools integrated with Ethereum, IPFS, and Whisper.
  • Web3j - A platform for developing blockchain applications on the JVM.
  • OpenZeppelin SDK - The Ultimate Smart Contract Toolkit: A suite of tools to help you develop, compile, upgrade, deploy and interact with smart contracts.
  • Create Eth App - Create Ethereum-powered apps with one command. Comes with a wide offering of UI frameworks and DeFi templates to choose from.
  • Scaffold-Eth - Ethers.js + Hardhat + React components and hooks for web3: everything you need to get started building decentralized applications powered by smart contracts.
  • Alchemy - Ethereum Development Platform.
  • Dapptools - A suite of Ethereum focused CLI tools following the Unix design philosophy, favoring composability, configurability and extensibility.

🏷️ [Day 7 - Day 10] Understanding Solidity

Solidity is an object-oriented/contract-oriented, high-level language for writing smart contracts. It is statically typed, supports inheritance, and is highly influenced by C++, Python and JavaScript.

⚠️ Note: Following URLs will get outdated as soon as new versions of Solidity will be released, I will try to update these URLs every month, but if I fail to do so for some reason, it is advised readers should refer to the latest documentation.

Day 7

Day 8

Day 9

Day 10

🏷️ [Day 11] Break

We are on a learning streak for the past ten consecutive days. I believe it is time you should take a day out for yourself. You are doing very well so far and you deserve a break. Go out, Treat yourself to your favorite food, give food to some street animals, spread love and have fun ❤️😊.

🏷️[Day 12 - Day 17] On-hands Practice

We are familiar with Solidity documentation now. It is time to write actual code, let’s practice Solidity by understanding and re-writing the following example contracts:

Day 12:

Day 13:

Day 14:

Day 15:

Day 16:

Day 17:

🏷️ [Day 18 - Day 19] Micro-projects

From Day 12 to Day 17, we completed code practice of various Solidity concepts, now it is time to put all of those learnings from previous days into micro-projects.

Day 18:

Day 19:

🏷️ [Day 20] Break

We are on a learning streak for the past eight consecutive days. I believe it is time you should take a day out for yourself. You are doing very well so far and you deserve a break. Go out, Treat yourself to your favorite food, give food to some street animals, spread love and have fun ❤️😊.

🏷️ [Day 21 - Day 25] Secrurity Considerations

We are now familiar with foundations concepts of Solidity programming, it is right time for us to understand what common vulnerabilities can be present in smart contracts and how you can spot and mitigate them.

Day 21:

Day 22:

Day 23:

Day 24:

Day 25:

🏷️ [Day 26 - Day 27] Tools and Frameworks

During these two days, our goal is to get familiar with existing tools and frameworks which can be useful while performing security audits related to smart contracts. Please note that there is no need to know A-Z about these tools, for now, just play around with them, get familiar, and test them out, and most importantly, Have fun!

Day 26:

Day 27:

🏷️ [Day 28 - Day 29] Reading audit reports

During these 2 days, we will be going through publicly available smart contracts audit reports, and see what kind of real-world vulnerabilities are generally present in Solidity code. I believe there is no need for me to include a list of URLs that host public audit reports, as they are just a Google search away.

🏷️ [Day 30] Break

We are on a learning streak for the past eight consecutive days. I believe it is time you should take a day out for yourself. You are doing very well so far and you deserve a break. Go out, Treat yourself to your favorite food, give food to some street animals, spread love and have fun ❤️😊.

💪 30 Days Challenge

If you do start this 30 days challenge, you can post your progress on Twitter with hashtag #30DaysOfSolidity and don’t forget to tag me @0xAsm0d3us. I’ll be happy to see your progress. For any query, you can reach out to me via Twitter, I’ll be glad to help. All the best ❤️

💌 Want to support my work?

If you think my work has added some value to your existing knowledge, then you can Buy me a Coffee here (and who doesn’t loves a good cup of coffee?)

name

Newsletter

Subscribe to Genesis’s Newsletter to get future articles/updates/blockchain-related news directly in your mailbox.