In this article, I will talk about ways we developers can learn, how to learn efficiently and finding time to do so. I also want to share my experience when it comes to learning, and how I'm consistently being able to make progress without feeling drained.
Ways to learn
There are multiple ways we can consume knowledge as software developers.
Books
There are various types of books when it comes to software development, technology-specific, behavioral, and conceptual books.
I think technology-specific books can be great, personally, I have read the book Effective TypeScript and loved it. The issue with such books though is that they quickly expire, become outdated, so that is something to just beware of.
Behavioral books, books that teach leadership, teamwork, soft skills, etc. I think such books are great, especially the teamwork and communication aspects. One of the books I'm excited to read is The Five Dysfunctions of a Team: A Leadership Fable.
I love conceptual books. Books that teach you techniques, approaches, and methodologies. Books covering topics like Test-Driven Development, Domain-Driven Design, and functional programming to mention a few.
Some books out there, like the book The Software Craftsman, will teach you many various things and not just cover a specific topic, such books are great as well.
Side Projects
Building side projects is a phenomenal way of learning, my favorite way actually. Practically applying things is the best way to learn them. It doesn't even have to be large side projects which use multiple libraries and stuff, it can be really small ones too, even something that just takes hours to build.
Have fun, try building something you haven't done before, challenge yourself.
Courses/Workshops
Doing courses and workshops can help us not just learn new things, but deepen our existing knowledge. I love from time to time doing workshops on Egghead and Frontend Masters.
I also love taking notes when doing workshops. By writing things down in my own words, I can truly ensure I've grasped that which was taught.
Pair/Mob programming
Pair and mob programming is such a great way to learn, learning from other developers, not just by observing them, but also from their feedback when coding with them.
You can learn new ways to approach problems, debug, shortcuts, technical terms, and knowledge, perhaps some of your coding habits that could've been done better, and much more.
Open Source
Contributing to Open Source is also a great way to learn. I think one thing that stands out is the fact that you've to read yourself into a new codebase, understand it, and where to make changes to it.
Obviously, the coding aspect is not the only way to contribute to Open Source as a whole, you can write blog posts, improve the documentation, create sample repositories or sandboxes for people to learn how to use the library/framework/technology.
Writing
Writing blog posts is also one of my favorite ways to learn. You better remember what you've learned and have a way of storing your knowledge.
It is also a phenomenal way of marketing yourself.
I also find myself doing more research on the topic I'm writing and learning even more that way.
Blogs
Reading and following blogs is also a great way to learn, or perhaps follow newsletters.
It can be great, following certain individuals and always reading their blog posts or newsletters when they come out, a beautiful way of passive and continuous learning.
Social Media
I love Twitter, there are so many fantastic individuals sharing useful knowledge, not just the hard skills, but also soft skills.
Sometimes you also find knowledge-full and interesting discussion in threads, as someone who is very curious, I love shooting my own questions in there.
Three amazing people I have followed for a long time are Mario Cervera, Cory House and Daniel Moka, love their tweets so much.
Learning efficiently, time and being strategic
Now, is it possible to continuously make solid progress and not feel drained, have time for other things in life?
YES
It's about being smart and strategic, not working harder, smarter!
My advice is to have a routine and form good habits.
Deep Work
Have a routine of regular deep work sessions. With deep work, I mean focused work where your focus is maximized. No music, podcast, audiobook, or anything else in the background, just fully try to focus on the task you are working on.
I have a 90-minute deep work session every evening Monday to Friday and more during the weekends. I advise you to find what works for you, for some long deep work sessions are better, for some shorter ones are with more frequent breaks.
The key with deep work is to not work outside those sessions, during the sessions you should work, fully focused, but not outside the sessions.
It still fascinates me how much I can accomplish by working fully focused compared to having music in the background.
I also feel a feeling of fulfillment and satisfaction, because of the progress I've made during those 90 minutes alone.
The best part is that you will have time for other things in life, family, friends, other hobbies and passions, and more!
Habits
As mentioned, forming good habits. Doing something regularly at the same time, your body and mind will become more accustomed to doing the thing, and you will find yourself requiring less mental energy to complete the task.
When forming new habits, I love the technique Habit Stacking which was mentioned in the book Atomic Habits. By this, you add a new activity on top of an existing habit.
For example, if you eat lunch around the same time every day:
After having eaten lunch every day, I will read my book for 20 minutes, focused.
It's such a beautiful technique because the key here is just to add a new habit on top of an existing one.
Conclusion
We can stay up-to-date, we can find time to learn, and even make solid progress without feeling drained, it's about working smart and approaching learning in a strategic fashion.