Continuous learning is, of course, essential to any career. In fact, it may be unavoidable in daily life: when was the last time you learned something from experience, even though you didn’t actively seek out that knowledge? However, for a career in software development, many say deliberately staying up to date with the software development landscape is necessary if you want to stay in the workforce.

As much as staying up to date is important, however, avoiding burnout is just as, if not more, important. After all, what good is knowing something you’re too mentally tired to apply it? This can be a real problem in the workplace, but it can be one outside of it, too. By personal experience, if I over-exert myself in some mental activity, I begin to dread the activity, it causes me difficulty sleeping, etc. In other words, classic symptoms of stress.

To help avoid this situation, I provide the following pointers:

  • Make time for yourself and others. As mentioned above, learning is important. However, there’s more to life than work and learning. Take time to catch up with your friends and family, inside or outside of work. Take time for your hobbies or other interests, as well. Even if I like coding to the point where I pursue it as a hobby, I still enjoy getting in a good workout, going for a bike ride, looking after my houseplants, board/video gaming with friends, or even just zoning out and watching Netflix or YouTube. However you enjoy passing the time, aside from programming, don’t forget to take some time to do it as well. Even the most simple, least mentally taxing things, like a long shower or bath, or 10 minutes of mindfulness meditation every morning, can be mentally invigorating.

  • Be patient with yourself. Learning on one’s own often has a less rigorous schedule than learning through university classes or a coding bootcamp might. This can be liberating, but not being beholden to a syllabus also means that the rate at which you learn can vary a lot more, especially depending on when you’re able to pursue learning. A lack of available time and effort, through no fault of one’s own, can still result in discouragement due to lack of progress. Therefore, practice positive self-talk. Remind yourself that it’s not your fault, and that you’re making good progress given the circumstances. Even if you’re able to spend a sizeable chunk of time for learning and end up not progressing, remind yourself that grasping a concept doesn’t always come easily, and congratulate yourself for putting in the effort you were able to anyway.

  • Hold yourself to account, but be pragmatic. This is mainly here to tie the above two points together. Of course, for learning to work, it needs to happen first. Every once in a while (for instance, every Sunday), take inventory of what you’ve done to contribute to your learning and self-improvement. Write it down, if you need. You can include anything - whether it’s grinding through practice problems on HackerRank or Leetcode, working on a personal project, or even writing a blog entry like this one. When you’re done, congratulate yourself for doing what you did, no matter how much or how little.

  • Choose your learning wisely. No one person can learn everything there is to know, of course, but no one person can even learn everything in one field either, or even one sub-field. Much literature already exists regarding the choice of being a specialist versus a polyglot, and much of that choice hinges on your current career as well as your vision of the future. If you’re going the polyglot route, however, recognize that you can’t learn everything. Try to choose a diverse slate of things to learn that introduces you to many different concepts. For example, when it comes to programming languages, you might want to learn an inheritance-based object-oriented language such as C# or Java, a prototypical object-oriented language such as JavaScript, a functional language such as Haskell, F# or one of the many Lisps, and so on (maybe even an esoteric language for the heck of it). For the rest, merely knowing that it exists, and keeping a “bird’s eye view” of it, will suffice. If you’re more of a specialist, or somewhere in between, things become easier, but the same advice still applies.

  • Find lower-impact ways to learn. Not all learning requires 100% focus. If you’re merely trying to keep up to date with what’s “out there” (see above), instead of trying to learn it in detail and apply it in a project, read an article about it. If you have a long enough commute, or any other situation where your ears aren’t busy and you don’t require complete concentration for a sufficient amount of time, listen to a podcast. In fact, podcasts can be great for surveying the development landscape and finding out about what’s “out there”, as well as brushing up on soft skills. On the other hand, be careful not to cram too much of this learning into your day, as even these lower-impact methods can still add to your mental fatigue, and will definitely add to your time spent thinking about programming instead of doing other things.

Of course, the list doesn’t necessarily end here. You may find something else that helps you to avoid burnout, and if it does, don’t be afraid to put it into practice. Hopefully, however, this article gets you started.