A long time ago before I knew how to code, I worked at a call center. Every day I looked forward to my lunch break. I'd clock out, hop on my little Vespa scooter, and zoom home to my apartment. I'd wolf down a quick sandwich and log in to World of Warcraft.
50 minutes left — had to make it count. Accept new quest. Equip new bow. Ready to take on the world, my pet bear Chewy and I set out to kill those 10 rats that had been tormenting the poor blacksmith.
After making short work of the vermin, we returned to town to claim our reward. Gratitude, 20 coins and some decent new pants — not too shabby. But then the real reward came. A loud ding sound, a flash of light, and a dozen "grats" messages from the local chat.
I had leveled up.
I zipped back to work with 6 minutes left and a smile on my face.
Those clever psychologists at Blizzard knew how to make addicting games by mimicking the real-world reward systems. When you level up in Warcraft you experience a huge boost of endorphins. Your character's base stats are all increased: more life, more damage, more mana. You can carry better weapons and equip stronger armor. You're ready to take on even bigger challenges.
There is nothing quite like that feeling of progress.
It takes more time and effort in real life, but when you put in the work towards mastering a new skill, you are transformed. Your brain's synapses are literally rewired for the accomplishment of that task in the future. The experience you gain changes you— for the better.
I used to struggle with CSS. I'd have to interrupt my work and look things up all the time. I got really tired of that crap and finally tackled the beast. It took the reading (and re-reading) of specs, studying blog posts/examples, and most of all playing with the tech— building a ton of little projects myself. And I gradually leveled up. Now I feel so comfortable with CSS I don't even think about it while I work. I'm able to focus on the thing I'm building rather than the tools I use, and it feels incredible.
I've designed my games (Flexbox Zombies and Grid Critters) to help others attain this level of CSS mastery in the most fun way possible.
On the other hand, I currently feel like a n00b at the new thing I'm learning: TypeScript. I hit the limits of my skills with it daily. Feeling like a beginner again — getting stuck and frustrated — is a good sign! It means you're learning. The trick is to use every single one of these moments as an opportunity to grow. Don't just google the answer and paste it in, that won't change you one bit. Study the thing that stumped you. Take the time to understand why the solution works. Sure, getting unstuck is your goal. But try to transform yourself into the person who gets yourself unstuck. Over time you'll hit fewer and fewer snags as your mastery over the skill develops.
Just like in video games, this leveling up brings with it many new possibilities. For starters you can learn additional things that would have previously been over your head. You become able to build more advanced, complex and delightful creations. Your ability to appreciate and learn from the fine work of others is refined. Your creativity centers have more raw materials to work with, expanding your imagination and ability to generate original ideas. And of course, you can earn more money because you are more skilled at your craft. But as a wise man once said "Don't do anything just for the money".
Nothing generates motivation like the pursuit (and use) of mastery. It's incredibly rewarding to witness your own transformation as you put in the effort. No dings sound, no light rays beam all around you, but you can feel yourself leveling up. Your inner drive getting replenished. Making progress on the road to mastery adds logs to the flame of your burning desire.
People often think it goes the other way around. "If only I had the motivation, I could get really good at coding!". But then they wonder why they can't seem to stick to a plan long enough to get really good. Don't wait around for motivation to strike (it won't). Generate it yourself by setting out on the path of mastery.
In Dan Pink's excellent book Drive he lists the three key ingredients of genuine motivation: autonomy, mastery, and purpose.
Mastery is a mindset: It requires the capacity to see your abilities not as finite, but as infinitely improvable. Mastery is a pain: It demands effort, grit, and deliberate practice.
— Dan Pink
You're never going to feel motivated on a project where you're not getting good at something that matters to you. Motivation only flows naturally when:
Mastery is a key ingredient of motivation, and the one over which you have the most control.
The happiness of a man in this life does not consist in the absence but in the mastery of his passions.
— Alfred Lord Tennyson
At first it takes hard work, pure and simple. But as you progress you begin to enjoy the skill you've worked hard to master. As your motivation shifts from extrinsic to intrinsic, the work itself becomes a reward.
When you're first learning to draw, it takes steady discipline and constant practice. But eventually drawing becomes a resource for you, something you do for the simple enjoyment of it. I'll write more about this intrinsic motivation in a future post.
One of my favorite audiobooks of all time is Flow by Mihaly Csikszentmihalyi. His life's study was to observe and figure out what makes people happy. He concluded that it isn't their leisure time, but rather their time spent in the state of flow that gives people the most joy and fulfillment.
Contrary to what we usually believe, moments like these, the best moments in our lives, are not the passive, receptive, relaxing times—although such experiences can also be enjoyable, if we have worked hard to attain them. The best moments usually occur when a person's body or mind is stretched to its limits in a voluntary effort to accomplish something difficult or worthwhile. Optimal experience is thus something that we make happen.
Csikszentmihalyi discovered that happiness comes from the process of intentionally focusing everything you've got on one thing at a time. On narrowing in and deliberately progressing along the path of mastery.
Are you ready to commit yourself to the path of mastery? To finally become amazing at the skills your heart is drawn to? Transformation, opportunities, motivation and happiness will be your loot if you're willing to put in the work.
Pick up Grid Critters and I'll guide you to master CSS Grid — the best thing to ever happen to CSS and the single most important skill a modern web dev needs to master.
Master CSS Grid right from the start by playing this new mastery game. You'll learn the ins and outs of Grids one fun level at a time, while saving an adorable alien life form from certain destruction.Master CSS Grid