One year ago, I left a “low-tech” industry to dive head-first into the Polkadot ecosystem. In that time, I have managed to go from no programming experience to successfully signing and submitting a simple extrinsic on my own solochain from a self-built dApp.
In this post I will layout the path that I have taken so far on my educational journey, highlighting strengths and weaknesses in material I used along the way, in hopes someone else might find it useful.
Q4 2023
- This free online course provided a top notch opportunity to learn programming fundamentals
- Discord channels moderated by TAs helped me formulate thought out/detailed questions which enabled me to later engage with Substrate StackExchange in a meaningful manner
Q1 2024
CS50x continued
The Rust Programming Language by Steve Klabnik and Carol Nichols
Rustlings
Substrate Tutorials: archive
- I dove into these tutorials shortly after the Polkadot-SDK merge, leading to confusion, Substrate StackExchange provided patient help
Q2 2024
Interactive Substrate Tutorials
- Similar in style to Rustlings Exercises
- Moving the repository to Polkadot-SDK was a challenge
- This builds, some learning material is depreciated
- Helped develop a better understanding of error messaging and
how to navigate FRAME and runtime dependencies.
Polkadot Blockchain Academy FRAME Lectures
- Right from the start these videos began answering questions about blockchain/Polkadot/Substrate that I could not get from the documentation alone.
- Pivotal in understanding storage and weights
- Closed lots of gaps, most notably for me Generic Typing
Using these resources along with the Polkadot-SDK documentation
I managed to build a pair of tightly coupled pallets and add them to a node template.
Q3 2024
The Modern Javascript Tutorial
Official React Docs
Node.js Docs
Next.js Docs
Building a Front-End for Substrate
Building a dApp with Polkadot.js
- These helped by providing examples of concepts such as contexts and typescript
- I ended up using PAPI to interact with my solochain
Using these resources, I have managed to successfully build a simple dApp capable of signing and submitting extrinsics on my solochain.
Some Thoughts On This Journey
The old Official Substrate Docs provided a way into blockchain.
As simple as it was, getting a node running on my machine for the first time
was an empowering feeling and a fun way to start to learn about blockchain.
The docs also laid out a clear path to learning blockchain development. All of this documentation was a driving force in my decision to use Polkadot. I feel like that “ease of entry” has been lost in the new Polkadot Wiki, and I hope the coming docs are able to bring that back.
I managed to get a lot of help on StackExchange, but it doesn’t lend itself to certain types of conversation. My experience on Discord was not great, lots of noise and redirection to the StackExchange.
Diving into Javascript after working with Rust was tough. 30+ years
of development has made it difficult to choose a way in and a route to take.
I still dont feel solid in the JS world.
Concepts from The Rust State Machine helped in grasping React basics quickly.
Rust typing lent itself to Typescript concepts.
Working with FRAME helped conceptualize other frameworks ie, Next.js
My learning here coincided with the release of Polkadot-Api. Realizing polkadot/api and polkadot-api are different tools took me longer than I care to admit.
I found the front-end work more complex than I was envisioning and helpful documentation was hard to come by. That being said, I understand this part is very much a work in progress, these resources are being actively updated/created, and will be a larger part of the PBA curiculum in the future.
Going Forward
I am amazed that the material put forward by the Polkadot community has allowed me to learn so much, so quick.
I know I have a lot of work still to do.
Goals:
Rework my solochain into something more “real world”
- weights/brenchmarking
- storage with more detail
- more complex relationships between users/assets
dApp
- complete rebuild with concepts learned
- curate simple UX for interacting with solochain