This is a part of my learning journey follow along. See the initial article and the table of contents here: Web3 journey follow along.
On August 12th, a little more than two months ago, I embarked on a learning journey.
I decided to learn something new, and out of all the things that had excited me recently, web3/crypto was the most exciting.
My initial learning plan was laid out (see: Web3 journey follow along), and I started working on it.
Here is my update after month two (month one summary here).
In month 1, I have learned some React to be able to build a decent frontend to interact with the blockchain. Then, I started learning Solidity. I've finished one extensive course and was halfway through the second. Month 2 started with completing that second course.
Completed: September 19th, 2021
It was a good course, and I liked it a lot. It goes much deeper than just throwing code at you and making you copy/paste and run it. It goes both into more detail and two steps back, when needed, and explains why a certain approach was chosen, how it's better than the alternative, or when it would make sense to do things differently.
The project code built during the course will be an excellent repository to come back to and see how things were done and why.
Only the "Learning Solidity Step-by-Step With Labs and Slides" section.
Started: September 19th, 2021
Completed: October 2nd, 2021
This one was good for solidifying the understanding of the concepts. While there was coding, there was also a lot of explanation of why things are the way they are, why some things are more complicated than they should be (e.g., optimizing the writing because of high gas costs), security concerns, etc. I may have been more eager to just code if it were my first course on Solidity, but as I already had some background knowledge, it was good at expanding that knowledge and connecting the dots.
The first six lessons
Started: September 19th, 2021
Completed: September 28th, 2021
By far the most fun one! And the most interactive one. And the most hands-on.
You start with one crypto zombie, and you keep working on it. First, you name it. Then, you give it some features and abilities. Then it can infect other creatures, so you start building your zombie army. Each lesson adds something new, and it also expands your army and what you can do.
After six lessons, you end up with a full-featured army, ready to conquer the world. I was pretty sad when it was over, and I had a lot of fun playing with it and learning from it. I highly recommend going through this crypto zombie experience!
Started: September 28th, 2021
Completed: September 29th, 2021
This is quite a long article documenting an app-building process. Nader Dabit created it based on his youtube video (The Complete Guide to Full Stack Ethereum Development - Tutorial for Beginners (2021)), where he does it live.
It was a decent resource to go through quickly. I mostly skimmed it, though. I've already learned elsewhere all of the concepts used in the article. Good for seeing everything put concisely, in one piece, didn't teach much new, though. But if you haven't gone through all the previous courses, it could be a great starting point.
URL: https://buildspace.so/ (there's no direct link, you need to log in and then find it in your dashboard)
Started: October 6th, 2021
Completed: October 11th, 2021
It's my second buildspace completed project. And I have NFTs to prove it!
Here's my NFT for completing the first course, "Build a Web3 App with Solidity + Ethereum Smart Contracts":
And here's the second one, for this NFT course:
This course taught me how to mint my first NFT, let others mint too, generate the NFTs dynamically instead of just uploading jpegs, and showcase it on OpenSea. An enjoyable project with lots of new things to learn.
I've created a SharkNFT collection and put it on a testnet for everyone to see and marvel (or not). Here it is, in all its glory:
The project taught me enough to feel confident and to be able to figure out everything else about NFTs on my own. Maybe I'll create another NFT collection soon, just for fun, and I need to come up with at least a somewhat interesting idea to keep it exciting.
Started: October 7th, 2021
Completed: October 14th, 2021
freeCodeCamp is a fantastic resource. Too bad they don't have a Solidity section. But they do have React.
What's so great about them? Everything is interactive, and you get immediate feedback and see the results of your code instantly. Each task is both short and challenging, and you need to actually write some code for each task, not just copy the code and see if you've copied it appropriately.
It gave me a much better understanding of React, and I had much more fun doing it than in previous React courses. I highly recommend freeCodeCamp. They don't have Solidity, but they have hundreds of hours of other stuff. Check it out if there's anything you're interested in. If there is, this will probably be the most effective and the most fun way of learning. Try it out.
After more than two whole months, I feel much better than after month one. While I don't yet know where everything should go or which convention to use in which situation, I am no longer lost when I'm looking at other projects' code. Even for well-established, non-trivial open source web3 projects (e.g., OpenZeppelin contracts), there's very little I don't understand when I look at the code. I know what each function does, why it is there, how it interacts with the rest of the contracts, etc. While I still wouldn't be able to sit and write a similar contract from scratch without referencing a lot of other projects I've done, at least I'm no longer lost, and I understand more than I don't understand. For me, that's a win.
I've also started working on a couple of simple projects on my own. Not yet something very useful but something fun that will let me learn a lot. I'll be able to share more soon.
Learning at least an hour a day has been huge for me. Sometimes, it was 2.5 hours, sometimes I was swamped with everything else, and it was exactly 1 hour to the minute, but I have never skipped a day, including weekends. There were a few days when I left it for last, and it was very late, and I started when everyone went to sleep, and it was a struggle to keep awake, but I still stuck with it. If I hadn't, it would be too easy to keep postponing the learning or cheating myself with false promises like "I'm tired today, I'll go to sleep and learn for two hours tomorrow instead."
This dedication resulted in two things:
This dedication resulted in two things:
Because of this, I'm upping the ante: starting today (Monday, October 25th, 2021), I will be learning and building web3 stuff for 3 hours every day, Monday to Friday, and 1 hour on Saturdays and Sundays.
And as previously, no exceptions.
I can't wait to be able to start building my own stuff. It should take me to this stage sooner.
It's a significant commitment—at least 17 hours a week. I also never count any breaks towards the total, so it's 17 hours of pure, productive work. Nominally, it's almost half of the full-time equivalent. Realistically, it's probably more than what most people spend working full time (various studies have found that the average employee is only productive for three hours a day, or an average of 12.5 hours per week).
It will require planning, commitment, and sacrificing many other, less exciting activities, but I plan to stick to it. I'm all in. I want to learn as much as possible, as quickly as possible, and see where it takes me. If it doesn't result in anything, I'll have a great period of an interesting and exciting time of learning and building. If it does—who knows what's possible. We'll see.