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, exactly one month 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.
How to best learn? By building. That's why I've started learning blockchain development.
My initial learning plan was laid out (see: Web3 journey follow along), and I started working on it.
Here is my update after one month.
Progress so far
First, I wanted to learn React. While it's possible to develop with Python (I'm familiar with it), React has become the de facto language of choice for the frontend.
I had zero knowledge of React, so I've decided that a decent primer would be helpful to know what's going on and not to copy code blindly from other projects.
For learning React, I've chosen this course:
Modern React with Redux
Sections 1-15 only, without the whole Redux part.
- (Section name - video lesson duration - date of completion)
- Section 1: Let's Dive In! (58m) — August 12th, 2021
- Section 2: Building Content with JSX (33m) — August 14th, 2021
- Section 3: Communicating with Props (1h24m) — August 16th, 2021
- Section 4: Structuring Apps with Class-Based Components (34m) — August 17th, 2021
- Section 5: State in React Components (40m) — August 17th, 2021
- Section 6: Understanding Lifecycle Methods (1h25m) — August 18th, 2021
- Section 7: Handling User Input with Forms and Events (1h19m) — August 19th, 2021
- Section 8: Making API Requests with React (39m) — August 20th, 2021
- Section 9: Building Lists of Records (24m) — August 21st, 2021
- Section 10: Using Ref's for DOM Access (41m) — August 22nd, 2021
- Section 11: Let's Test Your React Mastery! (1h52m) — August 24th, 2021
- Section 12: Understanding Hooks in React (4h17m) — August 30th, 2021
- Section 13: Navigation From Scratch (42m) — August 31st, 2021
- Section 14: Hooks in Practice (49m) — August 31st, 2021
- Section 15: Deploying a React App (17m) — August 31st, 2021
- Total: 16h34m
In reality, it took much longer than 16.5 hours. That's just the video content length. Add to that: setting up the dev environment, coding along with the videos, running the code locally, fixing errors, etc.
It's an excellent primer for React. What I liked about it (and what was frustrating at the same time) is that it didn't just give code to copy. It went much deeper than that. For each important concept, it took two steps back to explain the big picture, how the internal works, why they work this way and not the other, and how it connects with the rest of the concepts. It often slowed down the process of working on the actual project, but it effectively taught the language.
Next, I took a simple 2-week course where you immediately plunge into building before you even have any idea what you're doing.
Build a Web3 App with Solidity + Ethereum Smart Contracts
- Welcome, let's get you the details! — August 28th, 2021
1. Write and deploy your WavePortal smart contract to a local Ethereum network
- Live Session # 1 — August 29th, 2021
- Get your local Ethereum networking running — August 29th, 2021
- Write your first smart contract in Solidity — August 30th, 2021
- Compile contract locally and run it — August 30th, 2021
- Store 👋 data on our smart contract — August 30th, 2021
- Deploy locally so we can start building the website — August 30th, 2021
2. Build web3 app that connects to our wallet and talks to our WaveContract
- Setup a basic react app, setup Metamask — September 7th, 2021
- Deploy smart contract to a real testnet — September 7th, 2021
- Connect our wallet to our web app — September 7th, 2021
- Call our deployed smart contract from our web app — September 8th, 2021
3. Update WavePortal to randomly send lucky users waving at you some Ethereum
- Storing messages from users on the blockchain — September 8th, 2021
- Fund contract, set a prize, and send users Ethereum — September 9th, 2021
4. Update UI + deploy to an Ethereum testnet so anyone on the internet can wave at you using their wallet
- Randomly pick a winner and prevent spammers — September 9th, 2021
- Finalize and celebrate! — September 9th, 2021
It took less than two weeks, and I also was doing it in parallel with the proper Solidity course (the next on the list, below).
It was good at getting your hands dirty and writing some code. But that's it. It explained almost nothing—I mostly just copied the code. There was no explanation why things were done the way they were, how it was all connected, or how to do anything even slightly different than in the course's project.
I learned very little, but I wrote working code and deployed it on a test blockchain. That was helpful for the next course—more on this below.
Ethereum and Solidity: The Complete Developer's Guide
- What is Ethereum? (2h52m) — September 2nd, 2021
- Smart Contracts with Solidity (2h45m) — September 3rd, 2021
- Advanced Smart Contracts (2h29m) — September 5th, 2021
- Building Interactive Front-Ends (1h32m) — September 10th, 2021
- Real Projects with Ethereum (2h57m) — September 12th, 2021
- Ethereum Project Infrastructure (1h28m)
- Advanced Multi-Page Front-Ends (6h55m)
- Appendix: Basic React (3h8m)
- Total: 24h5m
I'm still going through this course. I'm more than 50% done, but a few significant parts still need to be finished.
This is a course by the same guy that teaches the React course. His teaching method is the same here: a lot of stepping back, painting a bigger picture, explaining why things are the way they are, what's a good idea to do, what's bad, and why.
I feel much more confident after doing half of this course than the whole previous one. To be fair, the previous one is not supposed to be comprehensive. It's meant to be a gateway drug to blockchain development, and I think it's doing a decent job at that.
How do I feel about my abilities?
It's still just one month, so almost nothing. But during that month, my goal was to learn at least one hour daily. No exceptions. Sometimes, it was just one hour when I didn't have time or was busy with everything else. Sometimes, it was 1.5h or even 2+ hours. I have a job and a family. Both require a lot of my time every day. I borrow a lot from sleep and hope that the payment will not be too steep when the time comes to pay for it.
So, after a month of learning, I don't feel completely helpless, like at the beginning. I feel like I could do some things on my own. Things that are different than the course working projects. Maybe it wouldn't be a production-level code, perhaps it wouldn't be tested as thoroughly as I'd like it to be, but it would (probably) work. And that's a massive win for me.
Also, when I look at the Solidity/React code of some of the larger, established projects, I understand most of what's going on there. There are a few functions or structures that are not familiar yet, or that are slightly different than what I saw so far, but I know what the code is supposed to be doing and why. That's another huge win.
I'll keep going and see how my self-assessment changes after another couple of weeks or months.
I'll keep learning at least an hour a day, every day. I'll keep posting updates. I'll keep giving my thoughts on what was helpful in my learning journey and what wasn't. I'll try to create a learning journey that many others will be able to follow and save a lot of time.