# How to learn Motoko with no experience?

**URL:** https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643
**Category:** Getting Started
**Created:** [December 10, 2020, 3:43pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643 "2020-12-10T15:43:44Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![evanmcfarland](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/evanmcfarland/32/1744_2.png) [@evanmcfarland](https://forum.dfinity.org/u/evanmcfarland)
#### Post date: [December 10, 2020, 3:43pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/1 "2020-12-10T15:43:44Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![ericswanson](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/ericswanson/32/622_2.png) [@ericswanson](https://forum.dfinity.org/u/ericswanson)
#### Post date: [December 10, 2020, 6:21pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/2 "2020-12-10T18:21:41Z")

</div>

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](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

---

<div class="post-metadata">

### Author: ![evanmcfarland](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/evanmcfarland/32/1744_2.png) [@evanmcfarland](https://forum.dfinity.org/u/evanmcfarland)
#### Post date: [December 10, 2020, 6:47pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/3 "2020-12-10T18:47:39Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![alexa.smith](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/alexa.smith/32/21_2.png) [@alexa.smith](https://forum.dfinity.org/u/alexa.smith)
#### Post date: [December 10, 2020, 8:46pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/4 "2020-12-10T20:46:07Z")

</div>

Hi @evanmcfarland, if you haven’t already read through [this detailed write-up](https://medium.com/dfinity/how-i-built-a-multiplayer-reversi-game-on-the-internet-computer-f67d2fed0fc3) on one of our researcher’s experience building an IC app, it is a great resource (together with the [repo](https://github.com/ninegua/reversi) itself). Hope this helps!

---

<div class="post-metadata">

### Author: ![Ori](https://avatars.discourse-cdn.com/v4/letter/o/ecae2f/32.png) [@Ori](https://forum.dfinity.org/u/Ori)
#### Post date: [December 10, 2020, 8:49pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/5 "2020-12-10T20:49:53Z")

</div>

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](https://github.com/dfinity/motoko-base)

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/enzoh/superheroes)  
[https://github.com/hansl/journey](https://github.com/hansl/journey)  
[https://github.com/dfinity-lab/phonebook](https://github.com/dfinity-lab/phonebook)  
[https://github.com/dfinity/linkedup](https://github.com/dfinity/linkedup)

Update—many more recent example project repos can be found here: [https://github.com/dfinity/examples/tree/master/motoko](https://github.com/dfinity/examples/tree/master/motoko)  
and here:  
[https://github.com/dfinity-education](https://github.com/dfinity-education)

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!

---

<div class="post-metadata">

### Author: ![evanmcfarland](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/evanmcfarland/32/1744_2.png) [@evanmcfarland](https://forum.dfinity.org/u/evanmcfarland)
#### Post date: [December 10, 2020, 10:21pm UTC](https://forum.dfinity.org/t/how-to-learn-motoko-with-no-experience/1643/6 "2020-12-10T22:21:13Z")

</div>

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