Perpetual waves of new tech on the scene can mean a continual learning process for engineers. How can you craft a learning plan to stay on top of it all?
Throughout my time as an engineering leader at Google, I have observed the rapid transformation of the software engineering field. Where upskilling was once an optional pursuit it’s now become a fundamental requirement for sustainable success. AI is just one example of a recent addition to the list of upskills on engineers’ minds.
However, the reality of keeping skills sharp amid the demands of a full-time job, family responsibilities, and work-life balance isn’t ideal. There are many key challenges: lack of time and energy, difficulty prioritizing what to learn, ramp-up friction when starting something new, and the misconception that learning is a solo endeavor done on personal time.
Finding the right balance among these hurdles is difficult, but not impossible, and starts with crafting a learning plan tailored to your near-term goals and long-term aspirations.
Align learning to current job needs and future interests
Early in my career, I often fell into the trap of picking up new skills without a clear rationale. I'd dive down the rabbit hole of a new language or framework generating a lot of buzz, without critically evaluating if it was the best use of my limited learning cycles. Over time, I developed a more goal-oriented approach.
Now, I like to start by monitoring the tools and concepts frequently mentioned in job descriptions for roles I'd like to grow into. I pay attention to emerging industry trends and pressing problems leaders at my company are trying to solve. This could include staying up to date on the latest technologies and frameworks that are gaining popularity, researching new programming languages or architectures that industry leaders are adopting, and reading articles or blog posts about the challenges and opportunities facing the industry as a whole. I also maintain a backlog of technologies and subject areas I'm personally curious about. Periodically, I reflect on this input to identify learning goals that are valuable to my work, interesting to me, and relevant to my desired career path.
These goals become learning activities I schedule into my week – this could look like completing an online course, working through a technical book, prototyping with a new tool, or diving deep into the code for a critical system. I’m realistic about the time I can commit and clearly define what "done" looks like for each learning activity. I also try to identify low-effort ways to reinforce the new knowledge on the job, like delivering a presentation, writing documentation, or using it to solve a real problem.
You don't need to learn everything on personal time. Learning should be treated as a first-class part of the job. Many leading tech companies provide dedicated time for self-directed learning. But even without formal policies, there are often ways to align upskilling with your assigned work. Take on stretch projects (projects or tasks that are currently beyond your level of knowledge or skill), jump into new areas when there's a need, and convince your manager that investing in your development benefits the business.
Make daily progress through sustainable habits
Finding time and motivation for learning amid the grind of daily life is challenging. Earlier in my career, I was stuck in a boom-bust cycle with my upskilling efforts: I'd get excited about learning something new, overcommit to an unrealistic study schedule, burn myself out after a few weeks, and then avoid it entirely until the next round of motivation struck. It felt like I was either doing nothing or trying to do way too much to be sustainable.
What ultimately worked for me was accepting that I didn’t need to be perfectly consistent or dedicate huge blocks of time to make meaningful progress. Tirelessly studying for 20 hours per week or 20 minutes per day isn’t the barometer for success, but the cumulative impact of showing up to learn day after day, over years, is.
My upskilling efforts now take place in the margins of life. I aim to carve out at least 30 minutes per day for focused study, even if it's broken up into a couple of chunks between meetings. For example, I'll read a chapter of a technical book on my train commute, do a few practice problems on my lunch break, or watch a conference talk while folding laundry. If I have a free weekend afternoon, I'll dive into a more challenging project that requires more exploration. But I try not to beat myself up if life gets in the way and I skip a few days.
Small habits done daily pay massive dividends throughout a career. A powerful framing I've found is that every day you get 1% better or 1% worse. Choosing to invest in learning, even just a little, is how you compound your skills over time.
Tap into social learning and build a knowledge-sharing culture
Many engineers view upskilling as a solitary activity – something to be done heads-down at a desk or on personal time. While there's value in focused self-study, my richest learning experiences have come through collaboration.
Instead of learning something in isolation, tap into the knowledge of peers, who you’ll find are often eager to explain something they've recently mastered. Once I discovered this fact, I proactively engaged with teammates, asking them to walk me through their code, pair programming on thorny bugs, and picking the brains of engineers with the expertise I wanted to develop. Being around smart, curious people makes upskilling feel more energizing and less like a chore.
These days, I try to make knowledge-sharing a key part of the engineering culture on my teams. Engineers share what they're learning in lightning talks and demos. We also do periodic "hackathons" where the team sets aside normal project work to experiment with new tools and ideas, creating an environment where learning is an expected part of the day-to-day.
Adopt a nimble approach to navigating the knowledge landscape
In my two decades in the industry, I've seen an explosion of new programming languages, frameworks, cloud platforms, and computing paradigms; to stay relevant, you may feel the need to constantly be on top of them. However, many core software engineering concepts like data structures, algorithms, system design, debugging, and product sense are remarkably durable. Learning these foundations deeply pays dividends regardless of the technical stack or domain you're working in.
To stay on top of the latest tech developments I look to first master the tools and concepts I use heavily in my day-to-day work, immersing myself in available resources like code, documentation, and “toy” projects. I maintain broad familiarity with a wide range of peripheral topics with high-level understanding and mental models I can easily reactivate later.
For skills more on the periphery, I optimize for fast, high-level understanding and mental models I can easily reactivate later. This could mean reading a project's README, watching overview videos, skimming tutorials, or running through a "Hello, World!" program.
Another key aspect is getting comfortable with just-in-time learning. Instead of trying to anticipate every single skill you might need in the future, just-in-time learning focuses on acquiring knowledge when you need it most. Some of my most productive upskilling has come from quickly picking up a new language, tool, or framework to solve a pressing problem on the job. The tight feedback loop of applying the knowledge right away helps it stick.
Upskilling is a lifelong endeavor
Continuous skill development and upskilling are essential for thriving in software engineering. While the challenges of finding time, energy, and focus for learning amid a busy work and personal life are very real, they are surmountable with the right strategies. By treating upskilling as a first-class part of your job and engineering culture, you can make steady forward progress without burning out.
There will always be more to learn than hours in the day. But through consistent, incremental efforts compounded over a career, you can develop the skills and knowledge needed to take on progressively greater challenges.
As a leader, I view enabling the continuous growth of my team as a core part of my job. Together, we are building a culture where everyone is empowered to be a lifelong learner, share knowledge generously, and expand the frontier of what we're capable of as engineers.