Level up your software engineering skills without burnout
Photo by Pawel Czerwinski on Unsplash

Level up your software engineering skills without burnout

The pressure to constantly evolve as a software engineer is real. On the one hand, I love it. Always having something new to explore is what keeps me so engaged in this career. For me, the perpetual learning curve is a feature and not a bug.

As a teenager in the 1990s, I got hooked on computers, computer networks, Unix systems, and programming—back then, it was all just for fun. I had no idea or thought or care in mind that it could also be lucrative. Sometimes I still have to pinch myself—it’s wild to think that we get paid (and paid well) to do something I started out loving purely as a hobby.

But other days, it can feel exhausting. Many engineers, including myself, often grapple with the nagging question: “Am I doing enough?” Conversations with colleagues tell me this feeling seems to be widespread in our industry.

And let’s be honest—this pressure doesn’t just affect our professional lives. It often competes for our time outside of work, potentially pulling our attention away at times from moments with loved ones, our social lives, and community involvement. Balancing career growth with personal life can start to feel like walking a tightrope.

But is that the only way forward? Do we really have to sacrifice all of our evenings and weekends, constantly chasing the latest trends to stay relevant?

I don’t believe so. There are smarter ways to grow, ways that don’t require compromising your overall well-being. It’s about working strategically, not endlessly, and finding the balance between career progression and a fulfilling life outside of work.

Here are some strategies I’ve been focusing on to further my career while maintaining a healthy work-life balance and avoiding burnout:

Work smarter, not harder

1. Make your day job work for you

Instead of burning the midnight oil, actively seek opportunities within your current role to learn and grow. Communicate your interests and aspirations to your manager, colleagues, and anyone who might influence your project assignments.

To get the opportunities you want, you have to make your goals known.

For instance, I was hired as a full-stack engineer with a focus on frontend work, but I expressed my interest in backend development early on. This led to me learning Go on the job and transitioning to primarily backend work.

Later, when I heard about the priority on containers and Kubernetes, I persistently requested to join the team working on those technologies. It was something new for me, and I was curious. You get here by showing interest and positioning yourself as someone who is eager to contribute.

I developed an interest in AI in particular starting with models like GPT-3 and Codex. I was so intrigued by the concept of in-context learning as it relates to Large Language Models (LLMs), and witnessing GitHub Copilot actually writing more often than not intelligent lines of code for me. I had to know more.

Shortly after, the space really took off with the release of ChatGPT. As I learned, I began sharing my experiences and experiments on social media. This not only helped me understand the concepts better but also connected me with others in the field. As AI became a more prominent in organizational focus, my known interest and commitment naturally led to me taking on AI-focused responsibilities.

Be proactive about your learning and career path within your current role. By aligning your interests with your company’s directions, you can often find opportunities for growth without sacrificing your personal time.

2. Focus on the fundamentals

When you do invest time in learning, make it count. Trendy frameworks come and go, but solid fundamentals are forever. You’ll likely hear different takes on what comprises these fundamentals, but for me I’m referring to here:

  1. Data structures and algorithms
  2. Database concepts and design
  3. Networking principles and protocols
  4. Operating system fundamentals
  5. Version control systems (particularly Git)
  6. Testing methodologies
  7. Concurrency and parallelism

In essence, many of the core areas of a formal computer science education. I’ve found these are worthwhile investments of your time because they serve you throughout the entire length of your career.

3. Contribute to open source

Contributing to open source projects opens doors. You get to work on interesting problems by your own choosing, learn from other developers, and build public credibility.

Open source involvement isn’t limited to personal time. Many companies encourage employees to contribute to open source projects relevant to their work. You might develop an internal tool that solves a specific problem and have the chance to share it with the community.

Moreover, your day job can benefit from open source engagement. When you encounter issues with libraries or tools used in your professional projects, you have the opportunity to contribute fixes upstream.

4. Learn by teaching

I’ve found one of the best ways to solidify your knowledge is to teach others. This approach not only reinforces your own understanding, but also benefits your visibility and personal brand.

There are numerous avenues to share your knowledge and expertise: start a blog, podcast, give a talk at a local meetup or conference, or host a “lunch and learn” session at your workplace, for example.

When you’re learning by yourself, you are n = 1, but when you teach, you’re multiplying your impact. This is how you scale up.

Moreover, teaching creates a feedback loop. As you share your knowledge, you’re going to get questions and hear perspectives you hadn’t considered, further expanding your understanding.

Remember, you don’t need to be an expert to start teaching. Sharing your learning journey, including the challenges you face and how you overcome them, can be incredibly valuable to others at similar stages in their careers.

The bottom line

Look, at the end of the day, your career is yours to shape. You don’t have to conform to anyone else’s idea of what a “good” developer looks like. Find a balance that works for you, and don’t be afraid to adjust course as your life and priorities change.

Remember, we’re in this for the long haul. It’s a marathon, not a sprint. This reminds me of something Andrew Ng said:

I think this is often not about the bursts of sustained effort and all nighters, because you can only do that a limited number of times. It’s the sustained effort over a long time. I think reading through research papers is a nice thing to do. But the power is not reading two research papers, it’s reading two research papers a week for a year, then you’ve read 100 papers and you actually learn a lot.

Take care of yourself, keep learning in ways that work for you, and trust that good things will come.

What do you think? How do you balance skill development with the rest of your life? Drop a comment below – I’d love to hear your thoughts.

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics