“I want to get better at coding using Rust”.
Suppose this was one of your personal development goals. How would you go about achieving this?
Here are some approaches that you could take:
- Google “how to code in rust video” and watch the first link that comes up
- Skim-read a book on rust (https://doc.rust-lang.org/book/)
- Do an online course in Rust (https://www.reddit.com/r/rust/comments/77qnhf/best_online_courses_to_learn_rust/)
- Ask ten of your colleagues who know something amount about Rust how they learnt to use it, and try the three best suggestions that you hear
All the above have a non-zero chance of achieving the goal “I want to get better at coding using Rust”. But:
- How do you know that the approach you’re taking is any good?
- How do you know that there isn’t a vastly better approach you could be taking?
When it comes to personal development, most of the time we choose to “pursue our goals” through routes that are far less effective than the routes that we could find if we tried.
More specifically, most people do at least the following:
- Tell ourselves and others stories of how we’re aiming for various “goals”
- Search out modes of activity that fit in with the narrative of goal-seeking
- Feel happy or sad when we do/don’t achieve our “goals”
However, there are heuristics that would be useful to goal-achievement that we do not automatically carry out by default. By default, we do not do the following:
- Ask ourselves what we’re trying to achieve:
- Is there a specific project I want to work on that requires Rust?
- Am I learning just for interest’s sake?
- Ask ourselves how we could tell if we achieved it and how we can track progress?
- Does “success” look like creating a new tool using Rust?
- Does “success” look like being able to solve the first 100 HackerRank problems using Rust?
- Find ourselves strongly, intrinsically curious about information that would help us achieve our goal:
- Have I spent 10 minutes sitting down and thinking about what information I need to get better at coding in Rust?
- Gather that information:
- Have I asked anybody else how I could get better at coding in Rust?
- Have I spent 5 minutes googling to try and find out how to get better at coding in Rust?
- Have I thought about which strategies have/haven’t worked in the past when trying to achieve similar goals, like learning a new programming language?
- Systematically test many different conjectures for how to achieve the goals, including methods that aren’t habitual for us, while tracking which ones do and don’t work?
- Have I tried more than one approach towards learning Rust?
- Have I tried any non-habitual approaches towards learning Rust?
- Do I have any idea what strategies actually work for me when learning a new thing?
- Focus most of the energy that isn’t going into systematic exploration on the methods that work best:
- How much time do I actually spend using methods I know to be effective for learning Rust?
- Make sure that our “goal” is really our goal, that we actually want it, and we’re not constrained by fears or by uncertainty as to whether it is worth the effort
- Am I actually just saying that I want to learn Rust to keep my manager happy?
- Do I have people I can talk to for support in case it proves much harder than expected to learn Rust?
- Use environmental cues and social contexts to bolster our motivation
- Have I got time budgeted and agreed with my manager to spend time learning Rust?
- Have I scheduled one evening a week to go through that Rust tutorial?
Most of the time, when we’re trying to achieve our goals, we just do things. Maybe we act from habit or from impulse; maybe we act based on a prompt from our manager; maybe we act because our friend suggested that this would be a cool thing to try. However, we do not systematically choose the narrow sets of actions that would effectively optimize for our claimed goals, or for any other goals.
But we can do much better! The heuristics above go a long way to optimizing for our claimed goals, but they require work to make habitual.
Do you want to get better at achieving your goals? And are you willing to put the work in to train yourself to get better?
In the next article, I’m going to share a framework for pursuing development goals strategically, based on the above heuristics.