Updated: 3/28/2021

Length: 19 minutes

How I Stay Sharp and Motivated to Keep Learning

Alt text

Photo by Benjamin Voros

First, let's get this straight. it is impossible to be on top of all the advancements and development in new technology. Even the brightest, most senior, most intelligent Aspie who doesn't sleep but a minute a day couldn't keep up.

But that's not a reason to stop learning. The industry demands it, but more importantly, your curiousity should, too. In order stay marketable and productive, we must both sharpen our current skills and gain new ones. We do this deepening our current skills through practice and research and by broadening the number of those skills through using new technology, reading, writing, and networking.

Okay, sure, you can do just fine if you're not learning new technologies, depending on your niche and seniority. But unless you change careers, the lack of current skills eventually catches up.

Embracing the grind --Prioritize

Given that there's too much for any one person to know. We have to choose wisely what we want to invest our time and energy learning, because it's a rare individual that can effectively learn and apply 15 programming languages, methodologies, best practices, library interfaces and apis, with soft skills to be a 10x developer.

More than half of us don't stray far from average. That's statistics. And that's okay. So how do we best utilize our average resources to optimize our programming performance?

By being strategic and calculated about what, when, and how we learn, and how we retain that knowledge.

Learning how to learn -- my personal methods

I can't speak for everybody, but I learn best by following these steps:

  1. Figuring out what I want to do or learn, whether it be learning a new technology, addressing a specific, personal or professional need, or just fixing a bug.
  2. Learning what others have done to solve this specific problem, if it's been solved before. When there are multiple solutions, I find one that suits my needs the best.
  3. Applying whatever solution I find through IMPLEMENTING IT in my own code.
  4. Reading documentation, blogs, and other code to better implement the solution.
  5. Taking notes, breaks, and returning to the code later (between a few days to a few months, if I'm feeling spicy).
  6. Repeat steps 3 to 5.

For me, it's really too academic to just read and take notes. I have to practice, implement, and act. Knowledge sinks in best when applied. Taking notes is also useful, but, without practice, it's just in-and-out, theoretical knowledge -- impractical.

This method applies both to my professional and personal projects. It's how I keep up with old and new tech. When best practices, libraries, or APIs change, I refactor. That's also an amazing time to learn, especially from myself. It's how I benchmark my own progress as well, whether or not I can read my own code later, judging its readability, organization, efficiency, and efficacy.

Switching context

But it's not just projects I explore in. I'm constantly reading books and articles. I read when I'm awake and my brain is active, and when I tire, I take a break or do something completely different, such as go on a walk, do some exercises, go to Jiu Jitsu practice. Or play video games (my 'vice').

When I'm bored of working on a project, I leetcode. And when that's boring, I work on a project, or read. You have to switch it up.

My brain needs constant stimulation, but not always the same kind. That's why it's good for me to switch context. I'm almost always learning, and never vegging out, but what I'm learning and how is constantly varying. I can only work my attention span so long to be effective. But switching context is like a breath of fresh air.

Learning how to learn

There are a lot of resources on this topic, but suffice it to say that this meta-skill is the most important skill to have. Period. This is the (post) Information age, where industries and fields are born and die within a generation and workers change careers multiple times, often within the same decade.

You have to be flexible, emotionally, mentally, physically. It means moving. It means learning. It means being resilient. It's the new normal, and if you can't, you have to at least be taking care of yourself.

Taking care of myself

I also notice an enormous different when I eat, sleep, and exercise correctly. It's too easy for me to get lost in code, reading, and knowledge.

I can easily stay up late at night coding. But the different in the morning is especially stark. My toddler wakes up between 5 and 6:30 no matter what. Sometimes she she has nightmares. I can't plan for that. I can control when I go to bed, and I know I need at least 8 hours to function above 90% during the day. Coffee doesn't cut it.

I also doesn't sleep well when I eat and drink poorly. Alcohol, especially, destroys the quality of my sleep, and junk food fogs my brain and attention. Lots of fatty, sugary food will do that. Eating lots of veggies, fruit and protein, with a healthy -- but not overly abundant -- dose of complex carbs keeps my mood steady throughout the day and my sleep extra nice.

And the best sleep happens when I eat and drink well and go to bed at 22:00 after having done at least 30 minutes of exercise in the day. Even if it means a 30 minute walk. Without that, my brain might be tired, but my body isn't, and I have trouble falling and staying asleep.

Summary

A career in programming is a long-distance sprint. No, that's not an oxymoron. There are times when the pressure to meet a deadline is overwhelming, so we're sprinting to implement a solution. When that's not the case, we're simply learning something new, mixing our creative juices with our critical thinking and problem-solving.

Mental and emotional stamina, resilience, flexibility, and raw power are necessary to thrive in such an environment. So we have to take care of ourselves and utilize our resources to the best of our personal abilities.