What’s your Big O?
One of the fundamental concepts of computer science is Big O notation. Big O helps us answer the question, “Can we do better?” We use Big O to measure the performance, or rate of growth, of an algorithm.
As lifelong learners, we want to optimize our rate of growth. How do we do that?
Your knowledge and experience are your most important day-to-day professional assets. Unfortunately, they’re expiring assets. Your ability to learn new things is your most important strategic asset.
In The Pragmatic Programmer, authors Dave Thomas and Andy Hunt define the term knowledge portfolio. Likening it to a financial portfolio, they outline five steps for managing it:
- Serious investors invest regularly — as a habit.
- Diversification is the key to long-term success.
- Smart investors balance their portfolios between conservative and high-risk, high-reward investments.
- Investors try to buy low and sell high for maximum return.
- Portfolios should be reviewed and rebalanced periodically.
We’ll return to this list in the future. Let’s focus on the first point: investing as a habit.
Are you keeping up with trends and developments in the industry?
Learning new things?
Learning old things?
Reading technical books?
Going to meetups?
Building side projects?
Contributing to open source projects?
Does this seem daunting?
In Atomic Habits, James Clear makes a compelling argument for making incremental improvements:
…if you can get 1 percent better each day for one year, you’ll end up thirty-seven times better by the time you’re done. Conversely, if you get 1 percent worse each day for one year, you’ll decline nearly down to zero.
Clear did the math for us:
1% worse every day for one year 0.99³⁶⁵ = 00.03 1% better every day for one year 1.01³⁶⁵ = 37.78
He also charted it, for us visual folks:
It’s clear (sorry) to see that if we let a skill atrophy, we will all but lose it, and if we want to build our knowledge portfolio, it requires continual investment.
Habits are algorithms operating in the background that power our lives.
What are your algorithms?
What’s your rate of growth?
Quadratic growth is horrible.
But it’s desirable when it comes to our personal growth.
In Atomic Habits describes the phenomenon he calls “The Plateau of Latent Potential”. This is the time period in which you are learning a new skill or working on a project and it feels like you are not making progress. You think you should be progressing linearly, but what you don’t realize is that you are progressing quadratically, maybe even exponentially.
The outset is a slog.
Configuration, installations, definitions, conventions, nomenclature, syntax, tooling…
There’s a critical threshold to cross before growth accelerates. And then… lookout!
The sky is the limit!
But first you must cross The Valley of Disappointment.
It’s a treacherous place for developers. 🐇 The terrain of our field is constantly shifting and everyone is opinionated.
Who do you trust?
You can see the other side of The Valley, but not the path to get there.
It’s easy to lose your way.
There’s no map.
So you Google it.
And you open so many browser tabs you can no longer read their titles.
You find yourself in tutorial purgatory.
Or deciphering the comments on StackOverflow.
Or worse yet, on the second page of search results!
How do you solve this problem?
If you want to learn a new skill, such as programming, or improve your problem solving, you must make it a habit.
Yeah, yeah. You heard me the first time.
But really, how do you solve this problem? How do you cross that critical threshhold? How do you find your way across The Valley of Disappointment?
Talk to the duck.
Understanding the problem or challenge, framing it clearly and articulately, is the first, and most important step to success. It also defines the boundaries of what you are learning or solving in order to prevent scope creep.
Focus on one thing at a time. If you chase two rabbits, both are going to get away.
Read The Fantastic Manual! Always refer to primary sources and start with the official tutorials. If you’re following a third-party tutorial, make sure it’s recent. Technical tutorials have a short shelf life. (There’s a caveat, though: sometimes the docs are outdated or non-existent and this is an opportunity to contribute to a project!)
Don’t give up.
But do take breaks.
As with Archimedes in the bathtub, sometimes you need to pull off the highway to see Eureka.