How do you make learning new stuff fun, and stay motivated? 💪🥳
Tags: programming, javascript, webdev, beginners
Published: 2020-04-12 19:35:03

I learn a new concept or technology, and I try to make a small, silly thing with it as quickly as I can. If I can come up with something amusing, it helps to make it more fun bringing it to life.

Exhibit A. *Trump channelling Kanye*.

{% codepen https://codepen.io/robjoeol/pen/qeabZe %}

While learning [AJAX](https://www.w3schools.com/xml/ajax_intro.asp), I made this. First, I searched for a fun, free API to use. [Kanye.rest](http://kanye.rest) jumped out at me! So, I was thinking about how to show Kanye West quotes from this API in an interesting way. I wanted to do something more than just putting the Kanye quote inside a `<blockquote>`.🤔

I remembered Kanye quoting Trump, so why not have Trump quoting Kanye for comic value? Previously while learning animation, I had made a bobble-head animation of Trump. So why not add *Kanye.rest* to that! 💡

## Make what excites you, and start small by doing what you can now

I also try to build a small piece of a larger pet project as often as I can, something which excites me and I would like to complete, but I do not know enough to finish it right now! 

The more reasons you have to do something, the more likely you are to finish it! It always helps if it is something that you yourself would like to use.

I like to build some games every so often, they are generally more fun to make. I was thinking of making a Breaking Bad edition of Monopoly. I enjoy doing some artwork, so combining the programming with some graphic design makes it more engaging for me. I knew that I could make the Community Cards immediately, so I thought that was a good starting point to see if it was fun to make. 

{% codepen https://codepen.io/robjoeol/pen/LYYBLLo %}

Making this helped me to realise that it would take quite some time to do a high quality version of the idea. I didn't want to dedicate that much time to it, which led me to think about doing something smaller and simpler in the mean time. I could make a card game like [Top Trumps](https://en.wikipedia.org/wiki/Top_Trumps) instead and I would use a similar knowledge set.

## Make a learning list and base a project on that

You can reverse the process also, make a list of things you would like to learn first. Then, you can find a project, or think of a project that utilises those topics and technologies, and look to build it piece by piece over time.

Courses that are more project-based can help with this. An example is Wes Bos's [free Javascript30 Course](https://javascript30.com/), where you build 30 projects (in 30 days). Personally, I don't like to follow a constraint like make a project in 30 consecutive days, but if you can set yourself a timeframe, it may help to be consistent.

In the same vain, I think the [100 Days of Coding Challenge](https://www.100daysofcode.com/) pushes you to build smaller things, more often. Looking at what other people did for this challenge can be source of inspiration for projects, you don't necessarily have to undertake the challenge.

## Returning to an old project

This is one of the hardest things to do. Try to return to old projects and complete them. I think it's a good philosophy to start fewer projects and finish them all eventually. 

When I learn a new topic or have made some progress on something, I make time to audit my previous projects to see if I can improve them somehow, or take them further. Seeing this incremental improvement can give you a better sense of your progress and give you some pride of achievement too. Being able to complete a larger project to a high standard can feel very rewarding.

You can schedule this audit as a quarterly thing to do maybe, or do it once you complete a project, and decide what to do next.

## Final words

I hope this inspires you find new ways to sustain your progress in learning a new topic, language, or technology.

Happy coding! 🧑‍💻⭐