Learning a new programming language or framework is hard work, even if you love doing it. You can’t get around this: to complete a course or a side project, you have to put your head down and do the work to reach the finish line. How do you motivate yourself when there are so many interesting skills and projects catching your attention?
The systems that keep you playing your favorite games again and again can be used to help you complete your goals. When you play World of Warcraft, everything is built to keep you gaming. There is always a quest to finish, a level to complete or a new weapon to try out. Even later, when you reach the end game, you can’t stop: your friends are counting on you to come and play. You always have the instant gratification of small wins and of seeing your character progressing.
You can create the same kind of system for your goals so you keep coming back until you finish them. You need to have short and well-defined objectives so you can see steady progress and be able to imagine yourself reaching the end, and a way to track this progress and see your growth.
Your objectives should be based on a process like coding or writing, and not on a specific result. It’s counter-intuitive not to focus on the goal itself, but you must be able to predict how long each learning session will take. If you fall behind because you’ve focused on a goal and don’t believe you can catch up, it’s likely that you’ll give up on your goal.
Once you have a clear objective, such as coding on a side project for X hours every night, you need to bring in the game aspect to complete the process. Here are some popular systems you can use to make a game out of your goals:
Don’t break the chain
This system is the most powerful one if you wish to build a habit of learning. You commit to working on something regularly, usually every day, and you put a mark on your calendar every time you complete your task. After a few weeks, the habit will kick in and breaking the chain will be painful to you. I followed a similar process for this blog: last summer, I committed to shipping a blog post once every week for the next year. It’s been over 6 months, and it would now take something catastrophic to break a streak that’s been going on for so long.
Create a chart
With this system, you’ll create a visual representation of your goal so you can see your progress instantly. Make a chart or a progress indicator that you can color and hang it in a visible place. You get the satisfaction of checking off items, like a todo list, and you’ll want to keep going once you have some momentum so you complete your chart. The chart on GitHub is a good example of this: it’s an instant snapshot of how active you are, pushing you to commit more.
Here is a great example of such a chart that was used to complete a different kind of goal (eliminating debt), with pretty swirls and colors: http://mapyourprogress.com/blog/how-i-paid-off-more-than-26000-in-debt-by-coloring-this-in/
If you can get your friends to work on a project with you, the pressure of your friends counting on you and comparing your progress can motivate you to reach your goal faster. You won’t want to fall behind and make everybody late. If you can’t find a project everybody agrees to, you can at least agree to track your progress on your respective projects together and motivate each other.
You can also sign up for Habitica, which rewards your good habits with RPG-like progress and allows you to work on goals in a group setting. It works for some people, but I must admit I was pretty bad at this: if you wish to kill monsters and complete quests, you must enter your progress on the same day it happens or it will harm you. Ironically, that’s a habit I was not able to build even if the task itself was completed.
Go back to the introduction of this series : Play and learn as a software developer