It's not entirely unrelated to your job if it's making you better in your current role. And if your employer doesn't contribute to your growth, you really need to take it into your own hands.
Your skills will not take you further, your network will.
My single piece of advice is that, if you're going to do this, be committed to it. I had a block on my calendar. I had an office (in those days) and closed my office door. I didn't respond to emails and I declined meeting requests. Consistency was key and, once everyone knew that it was my learning time, it was respected (in part because I respected it). One afternoon, my boss knocked walked in, looked at me, realized what time it was, turned around and walked back out.
After Microsoft, I worked at Google where "20% time" (had been a thing but no longer really was in the 2010s) and, once again, Friday afternoons were blocked on my calendar and I used them diligently for learning. My Google managers were consistently supportive and respected my commitment to the time.
One advantage to Friday afternoons is that they're generally very slack time. People are either leaving early or working little, emails are fewer and, in a global organization, (for US West Coast), much of the rest of the World has already entered the weekend.
This is the root of the problem.
The reason I say that is because I feel this post describes myself.
I often feel tired when I’m working somewhere that’s not intellectually challenging, and after working at a couple companies I have enough perspective to recognize it fairly quickly. Work shouldn’t feel draining. My best recommendation would be to take some time off, at least 2+ weeks, and see if the energy comes back.
I think it's important only to be aware new things, definitely not master. You may even only need to read an article or two on a new tool to grok its general use case and see if it actually offers anything new, or if is just a new flavour of the same old.
Maybe I am just a fast learner but I definitely see no value in learning every new tool outright. I keep an eye on it, but once you separate the wheat from the chaff there is really only one or two fundamental tools worth trying out every few months. Of those, maybe only one a year worth diving into.
The job market is whatever, you can't get meaningful experience on tools you don't use on projects anyway. So just do a week of afternoon deep dives before an interview and you'll be fine.
Your employer benefits from you expanding your knowledge even in areas not immediately applicable to the work in front of you. Your output will be improved if you're exposed to fresh ideas and working at a sustainable pace where you don't feel overwhelmed. If your employer doesn't understand that I'd consider finding a better one.
Lots of places are happy for you to take time for training during work hours. Many are even willing to pay for it.
I have a number of young devs working for me and I give them the same advice. None them knew how to handle sessions using JWT tokens, use pgvector, or run our containers on Fly.io when they were hired. They learned it on the job, on the clock, and I am so proud of them for it.
I’ve been learning since early 90s and have frankly forgotten more than I remember but none of that matters. What matters to me is if you can solve problems, even if you need a bit of guidance and coaching from others. If your current employer doesn’t feel that way, I hope you can find one that does someday. It is why I am still coding three decades later.
All that said, I also read HN regularly and I know I don't touch beyond the very tip of the iceberg and that's fine.
I usually don't do any dedicated tech related practice time at all though, unless there's something specific that's obviously the next big thing, or that I expect to need in the future.
There's a lot of stuff I just... Don't need to know. I have no interest in making a new programming language, and I'm not particularly interested in less popular languages.
I don't need ten million tools to do the same job, I'm not much of a minimalist, I already know Git, it's what everyone else uses, I don't plan to work on VCSes, so I don't need to learn five other ones.
A lot of stuff I'm perfectly happy to accept as a black box. I love SQLite, but I've never seen the code. I don't know how HTML layout engines work. And I don't see how I could have any kind of a life if I insisted on learning as much tech as possible, as opposed to just a reasonable amount to steadily improve at my job.
I do the same on weekends. 1 hour, every day learning grind.
If you want to learn carpentry: buy a house or work land
If you want to expand IT skills: attach it to revenue/savings
It's really hard to do much productive thinking outside of a full time job. Trying will make you burn out pretty hard. Use that time to fullfill the needs your job can't. Go to the gym, socialize, etc.
At work I've blocked out time to learn. Here's what a typical day has been recently:
- 1-2 hours for Golang (TDD and Leetcode to learn the language)
- 1 hour towards learning SQL via CS50SQL
- 1-2 hours towards side project (A chrome extension development framework)
I only work 4 days a week though
This is the thing to change. Make time on the job, or find a new job where you can do a reasonable amount of learning on the job. If salary is your highest priority, I’d suggest to change that as well.
During the work day I need to provide results not just learn
Results come from learning.
--My favorite is to either make that thing a hobby, or integrate it into an existing one.
A current example is e-paper. I love displays and will learn how to drive them with a microcontroller, usually a Parallax Propeller chip, which happens to do the task well. Another is old school game development. Little projects to explore a tech bit, like sprite multiplexing, or a play dynamic, make use of an intriguing controller.
So, the answer was to get an e-paper display running a game. I have one doing about 12 FPS with moderate ghosting and full screen 260x170 or something close.
This method is by far my most productive and entertaining way to learn new things.
--find someone who is skilled and help them with a project, or perhaps you are on a project and can bend your role to cover new learning
This is my second favorite and can be very effective and is as entertaining as the other person (people) allow.
A recent example was CANBUS. A project required a sniffer to display traffic and help identify an error condition the equipment manufacturer insisted was not possible and worse, they would not publish their CANBUS maps. So we published them and then asked nicely if we could have a chat now... I can't say more, but it came down to improper termination on a board. One lousy jumper cost way more time than you might think.
I had CANBUS on my hit list for a while. Doing that ramped me right up. Next thing I did was have a little fun with my car and drove some CAN boards with a micro, as well as make my own sniffer.
Note: both of these were how I learn, and will continue to learn, about operating systems. My UNIX/IRIX skills happened that way followed by the purchase of RedHat Linux 5.2 in the box! Good times. More recently, Android is getting me curious...
I want to know a lot more about mobile phones. These two are probably how I will do that.
--On both of these methods, start having conversations! Meet some people local to you and for sure find good places online where you can talk, be helpful, feed your net and it will feed you back when you need it.
If you do nothing else, DO THAT. Worth it. Leads to free gear, job opportunities, adventures, projects and good times with what might be great friendships that can last decades.
--Buy learning kits and or gear
Some people do pretty well with kits. I do OK. Depends on the kit. Something like the Ben Eater 6502 kits would work well for me. Tons of great skills to be had.
If you go this route, you just need a regular cadence of times to complete them. Set this times and turn your mobile off.
--Start fixing stuff
If the skills you need or want are part of car, appliance, device, home repair, just start. Network from help and trade skills and gear.
I grew up this way in a rural environment. Often fix it was a way of life and it has been high value throughout my life.
Those are the main ones I use to make real progress. The list below are things I do to stay informed and find out about stuff I may want to learn more about:
Read books and follow the kinds of people who you want to be when you grow up. I am in my 50's and am still growing up. Books about lives are really good. Same goes for videos. You get perspective that way. You may learn or see how to think differently.
Do not forget how to play. This is the essence of hacking and hacking on stuff is fun, often useful, might save your ass.
Actualize the value of all this with your spouse, partner, girl or boy friends. They will grant you the space. Otherwise, you are always dodging, making excuses, delaying.
I was scolded quite a bit for not padding estimates early on. I argued that I'd be wasting time if I didn't pad. But the damage from a missed estimate is much worse, and if I had extra time I was expected to read a book, watch a movie, play Dota or something.
As it is, the weekly sprint plan is what you can get done by Wednesday. Silently add one non-scheduled item to cater for Parkinson's Law. If you're done for the week, then feel free to read books or refactor or something.