Okay, so you just learned how to code via university, a Bootcamp, or self-teaching. But how do you keep learning? What supports are out there, and how can you use them?
Here is my biased opinion on that:
Learning must be worth it
First and most important is that learning must be worth it for you at a given moment. That 'worth' can come from different sources:
The enjoyment of learning something new
The benefits you think it'll bring to your career
A project at work necessitates a given skill
You have a hobby project and need some knowledge
Those four sources of worth have the same conclusion. If you keep finding something else to do, it's likely because what you are learning right now is not worth it.
As such, feel free to leave things unfinished. It is not worth it if it is a struggle (even less if no one is paying you to learn it).
Also, this is not school anymore, so forget about learning everything by heart! Whatever sticks, sticks! It is more important to be familiar with something and know where to look than to know it by heart and how to answer 'exam' questions about it.
Finally, regularity and consistency are overrated. Don't make learning a chore. It is not a big deal if you miss a day, a week, a month or a year. The lessons will still be there when you are back and ready.
Broad Categories of Learning
I would divide the categories of learning into three broad categories, and each of them is interesting at different stages.
Philosophy of software development
This category encompasses everything that is not code but is about code, specifically how to write and organize code better. A few possible subjects are:
Test Driven Development
Domain Driven Design
This content is the one that will yield the most bang for your buck, as it will teach you subjects that are transversal and usually applicable to any code language or paradigm. It also has the advantage of being usually easier to grasp and integrate.
Ian Cooper's talk about TDD
I group in this category the initial explorations of any subject annexing my main interests. In my case, that includes how computers work, how networks work, and game development. My main question is how and where to find what I want to learn. My initial inspiration(s) came from https://teachyourselfcs.com/, a website that I wholeheartedly recommend.
I also keep an informal list of subjects I want to learn more about and will google them in the future. UML, for example.
You will usually get an excellent introduction to know if you want to know more with a quick google search and a little while of casual browsing.
From NAND to Tetris (SO FUN!)
Algorithms (from the teach yourself cs website)
\No, you don't have to finish them; start, learn what you want and get out if it gets tedious.*
This is for your 'core' subjects, those you really want to learn more about, those you use and enjoy. This is when you know you want to 'get good' at them.
My primary strategy here relies on documentation. When you need to do something, start by going to the doc and exploring the code source if you have time. You will be amazed at how much you pick up doing that.
Courses can also help you out here. Just pick the ones that are appropriate for your level.
Technical in-depth books about your language(s) of choice
The power of TDD
TDD helped me a lot (testing in general, but TDD in particular) as it allowed me to iterate and try out new things safely. Learn to test as soon as possible, and write a small test before you code; it will unlock many doors.
Complicate your life
You'll mostly do things you know and are safe in your job. Hobby projects are a great way to try out stuff, play with concepts, and take risks. So, complicate your life as much as you want there, overengineer things, and have fun!
The fuck scale
Just a present from me to you: The Fuck Scale
If you have questions or remarks or need help figuring out where to start, reach out here, in mastodon or on Twitter. I'll do my best to answer :)