I am a software developer and I have been a part of the software industry for almost 5 years. I have trouble developing a learning strategy.
In the beginning, it was easy. I needed to learn the basics of things. How to write object-oriented code in Java, how to build a docker image, how https works, basic Unix commands, etc.
However, now, I feel that I need to know a lot of things. When I check my current skills, future goals, and job descriptions, the list of stuff I must learn is extremely long. AWS, advanced stuff in Go, distributed system theory, databases, queue systems, Istio, other fancy CNCF tools, networking in Linux, k8s controller patterns, oncall stuff, gRPC, authentication/authorization mechanisms, managing a REST API, scaling something with zero downtime, observability etc. I am already using some of these tools/techniques in my full-time job but it is impossible to experience all of them in a position. On the other hand, as far as I see, I am supposed to know many of them.
I am aware that my choices are going to deeply affect my path/opportunities in the future. For example, k8s controllers are a very niche field whereas being a skillful Go developer comes with more and more opportunities. To learn the theory of fundamentals is a relatively long-term investment.
Additionally, my time is limited. I am already spending some part of my weekends and nights to learn something new but it is very exhausting. I literally love developing software but it doesn't seem sustainable to me in the long run if I cannot develop an efficient/focused learning strategy. I'm afraid to fall behind the industry.
So, what is your learning strategy? How do you plan your time to learn something new? How do you pick a subject or tool to learn?
p.s. I am aware that having a full-time job that teaches you a lot is the most critical part of this strategy.