How to learn Motoko with no experience?

I’ve always stayed away from web development because every cs person told me it was a miserable path. Now I am a huge Internet Computer fan with some app ideas that I want to build (or at least take part in building). I also now have time freed up to learn to code. What should be my starting point? Please don’t just say Dfinity education because that is not enough at the moment.

I know a little bit of Python for data science, but mostly for procedural programming and almost no OOP. I have a somewhat technical background, but no formal education in cs. I want to learn Motoko enough to let’s say code or at least understand an app as complex as CanCan. Should I start with Rust, Javascript, or C? What courses/tutorials/demo apps? Is it stupid to start with Motoko given the limited resources? And finally, what’s the starting point for front end stuff because that’s still black magic to me?

Thanks so much. Your thoughts and personal experiences along these lines would be greatly appreciated.

5 Likes

Hi Evan, and welcome!

Most of the programming languages and development environments that I’ve learned, and certainly the first ones, I learned by making changes to a program that someone else already wrote.

To get started with Motoko, I went through the tutorials (https://sdk.dfinity.org/docs/developers-guide/tutorials-intro.html) in the developer’s guide. I recommend that as a starting point. Then after that, to take another look at CanCan or another sample app that interests you and see if some of it starts to makes sense.

Regarding the front-end, which is pretty much black magic to me too, I found that going through the Motoko tutorials that involved the front-end helped me with some of its mystery.

Hope this helps!

-Eric

13 Likes

That does help. I always thought people started out by taking fairly linear online courses but I’d much prefer reading published code and documents to connect the dots myself if that’s feasible. Thanks Eric.

Hi @evanmcfarland, if you haven’t already read through this detailed write-up on one of our researcher’s experience building an IC app, it is a great resource (together with the repo itself). Hope this helps!

7 Likes

You might also want to take a look at the Motoko base library to get a feel for the way things are done, and to see what modules are available. You’ll find it in the $(dfx cache show)/base directory after installing the sdk, or the repo here: GitHub - dfinity/motoko-base: The Motoko base library

There are some great project repos you can reference as well, a quick search through these often finds a good solution or approach. Some to start with are:
https://github.com/enzoh/superheroes
https://github.com/hansl/journey
https://github.com/dfinity-lab/phonebook
https://github.com/dfinity/linkedup

Update—many more recent example project repos can be found here: https://github.com/dfinity/examples/tree/master/motoko

You could also try creating your own simple project as a goal and solve each step as you come to it, referring to all of the above as you go.

Any questions of course just ask in here, we’re happy to help!

10 Likes

I didn’t know many of those repos existed. I have plenty to work with now. Thanks Ori.

3 Likes