Here’s a simple formula for mastery and being exceptional at your craft, credits to James Clear:
“A few things you need to achieve exceptional results:
1) Quantity: You take lots of shots.
2) Quality: You take thoughtful shots.
3) Consistency: You keep shooting for a long time.
4) Feedback. You take better shots over time.
5) Luck: You get a few favorable bounces.”
When I read that, a light bulb went off in my head. More accurately, a lightning storm. Of course! That’s all the conditions required for mastery at anything. Quantity, quality, consistency, feedback, luck. All in a catchy, easy-to-apply heuristic. It made me think about my own process of learning coding—my #decodingcoding journey—and how I can improve it. So here goes:
Quantity: This is all about having many opportunities to practice coding every single day, and making lots of projects along the way. The more shots I take at solving problems with the languages/frameworks of my choice (Vue, Rails); the more projects I ship out into the wild where people use it, the better I get at it. I’d pushed out a couple of Vue projects so far - an invoice builder, a Google Sheets listing via Google API, a blog in Carrd via Wordpress API, and a calculator on the way.
Quality: It’s not enough to have many opportunities, but to not let each opportunity go to waste by shabby performance. Because the quality of my effort matters. I can practise poorly, not put my heart into it, just get through it without really understanding. I won’t learn anything that way. Being intentional and conscientious with each rep is key.
Consistency: I’m already doing this with my daily hour of code streak. Not enough to practice a lot for a short period of time for say, a few months, and then drop it for the rest of the year. The learning doesn’t quite stick. That’s why I had a start-stop, two-steps-forward-three-steps-back affair with coding, which led to much frustration.
Feedback: This I admit, I’d not been doing enough. Getting feedback and critique from mentors and other experienced developers on my code in public is not as easy. Finding mentors in the first place is hard, lest asking someone to spend their evenings looking at your crappy code and what you’re trying to do with it. I’m bad at asking, so this is the emotional barrier for me. But without some guidance on best practices, good coding conventions and habits to have, I won’t get far. I need to find friends who wouldn’t mind helping.
Luck: I believe you can’t dictate when luck will arrive, but you can create conditions for it to arise as and when it does. In fact, I’m not sure if luck is more of a consequence or an after-effect of doing the four above-mentioned points. Because the more you try over time, the more you naturally increase your probability of striking gold. But yet there’s a randomness to our environment that no amount of effort can make up to. That random opportunity, is luck. And so perhaps to get luckier, I can do things to help nudge it in that direction. One of the best ways to get luckier is to tell others about what you’re doing. Another way is to not get fixated on a certain process of getting to my destination, lest I miss out on lucky breaks that might get me there in a roundabout way. Be focused on the outcome but flexible about how to get there. For example, if I had been fixated about learning coding through courses but not recipes, I wouldn’t have stuck to it (again). Hence, telling others and being flexible are things I can definitely improve on in terms of my coding journey.
Is there anything else missing besides these five conditions? What would you add to it?
Follow my daily writings on Lifelog, where I write about learning to code, goals, productivity, indie hacking and tech for good.