"Keep learning." It's one of those things you will read on every guide on how to become a good developer. But how can one keep learning every day? It's easy in the beginning you are starting, there is so much to learn. But now, you have a good-paying job, you know everything well enough to keep you and your employers happy. Sure from time to time, there will be some challenges that will enable you to learn new stuff. But it's not enough. I think that I need to learn at least one new thing each day, otherwise I do not count that day as a good productive day.
OK, but what can we do? In this article, I will go over a list of possible solutions to this problem.
Side projects
Side projects are the obvious solution to this problem. You do not need to aim for the best-looking, startup-ready project out there. The goal (at least for me) is to learn something new. So If your day job is mostly writing backend Java your side project should not be a backend Java. I recently redid my blog with Next.JS as a way to force myself to keep current with modern front-end technologies. In the past, I did a lot of side projects that were more of a joke.
To learn machine learning I tried to do something call Putin Emoji. I was image search, that searched through photos of Vladimir Putin that matched the desired emoji. He surprisingly has almost a full range of expressions.
You can even deploy it somewhere for people to see, the DevOps part can be a learning experience as well. I was running Putin emoji live for a month or so, but as you imagine it's hard to monetize such a thing (based on a stolen image of one of the world leaders) and it was not very cheap to run so I decided to take it down. Plus you know it was not perfect anyway but I learned a ton.
Reading
Another obvious solution is to read. You can read books, blogs, Twitter, etc... You can learn a ton through reading but I would count that as a piece of theoretical knowledge, I need to touch stuff to learn. Maybe you can code alongside the reading, etc...
Do not confuse reading through your Twitter wall with learning. Sure there may be tons of tweets describing a concept, etc.. but how hard a concept can be if it could be explained in the form of a Tweet?
Great sources you can use are:
Writing
Writing is a great tool that can help you learn new stuff. I try to document everything that I learn. This way I have notes to almost everything. For this, I use a folder full of markdown files that I edit in VS Code (the most overkill note-taking app). Sometimes some of my notes will make it as a blog post. Or Stackoverflow answer.
Videos
You can also watch video courses (or YT videos) where someone is explanting the stuff to you. To be honest I do not like watching videos, as I much prefer written tutorials. You need to keep up with the video, rarely do people code alongside, as the video keeps rolling, and I hate pausing it. You cannot copy-paste from a video either.
But hey some people use videos as their main learning source and do not complain. That is why it's on this list.
Speaking
I always found that the topics I know the best are the topics I used to teach to others. In my previous job, I was doing a lot of company-wide workshops about clean code and testing. I used a lot of time preparing those presentations and keeping those up to date (yes mainly changing meme images in the slides to the current memes) this kept in the loop, I was perceived as an expert on the topic and I kept learning new stuff. You can do the same as a speaker in your local meetups and or any conference.
For more tips like this, you can follow me on Twitter.
Top comments (8)
Thank you for this post!
Until recently I thought it's best having side projects that do not directly relate to the technology you're working with, in order to be familiar with more technologies.
Lately I'm beginning to think it's also nice to deepen your knowledge about the stack you're working with, in order to have more efficient and better solutions on the daily job.
I wonder - do you have any opinion about this?
Hi.
Depends on what are your needs I usually try to deepen my knowledge while working on "work" projects. I try to take tasks that are a challenge so I am "forced" to improve. I know that this is not possible all the time. But if you feel the need to improve, and you cannot do it this way side projects are very fine way of doing so.
Thank you for the insights! :)
Summary Notes
Side projects
Reading
Writing
Videos
Speaking
Addition: Pairing also goes a long way.
Thanks for this post
I enjoyed reading through the list. You can do a follow up on this with few pet project ideas and what to they cover.
I'm a professional android dev, in my free time I hack around with SpringBoot and GraphQL. It's hundred percent true that I learned a new thing everyday. it might not be considered like a real world project experience as you operate on a controlled environment and you grow soft towards your brainchild. Still it holds lot of surprises.
So, get out of your comfort zone and start a pet project.
So many interesting thing all around the world. And you mention putin.
That is true. I do not imagine how I can live day without learning something new.
I just yesteday organize all my .md file and start to use VS Code for that. And now I am reading about that. :) :) :)
I would add that building in public is also a great way to get feedback, learn and grow. That's one of the reasons why I built Make.rs make.rs
Addition: Open source contributions.
It can help you to know more details about specified open source projects.