Not all lessons are created equal.
Some are little reminders. Some are slaps in the face. They feel terrible but fundamentally change the course of your life.
Over the past 15 years as a software engineer, this is the biggest lesson I've learned:
Use Tangential Learning
Divergent learning is learning something new by doing something old and enjoyable.
I learned most of the techniques behind card magic while binging anime. I still wasn't enjoying card magic to practice for 2 hours a day, but I sure as hell had a ton of anime I wanted to catch up on. So, I:
Picked a move
Pressed play on an episode
Repeated that move non-stop until the end of the episode
In 1 year of doing this, my technique was better than many magicians', some of them with extra 5-10 years of experience.
Learning Programming by Accident
I accidentally used tangential learning to learn to write software. I got my high-paid job that many people want because... I wanted to make games.
In 2007 I was obsessed with Warcraft 3. Loved that game. I also loved playing custom-made adventures, called maps in Warcraft.
Every map told a different story and got you through a different adventure. How cool was that?
Very. So I spent every minute outside of school playing.
But, my taste evolved faster than creators can create maps. I had improvements in mind. Things I could do better... only if I knew how!
So, one day, I opened up the Map Editor and started playing around. I spent months in that thing creating, testing, and playing with friends.
Jump forward 3 years and I'm at school learning to program, but I find something weird. We're learning the same stuff I already know!
It turns out the Warcraft 3 map editor was actually programming.