Working on side projects

There has always been an ongoing debate in the tech community, at least, for as long as I can say I started engaging with it about whether or not developers should work on side projects or not.

There are essentially two sides to this argument: we have the people who claim that with such a hard daily job, it’s better if you don’t spend your free time writing code and being engaged on the same set of things that already take up most of your day, and you should pursue other hobbies. Then we have the opposing side who is on the other end of the spectrum, and, well, for these people, if you aren’t hustling hard 24/7, are you even a developer? Do you even code?

My stance on this is actually a more balanced one: I think it’s extremely important and even desirable and healthy to have several different hobbies besides just coding: you can run, go the gym, read books, do puzzles, etc, but, you can also attempt to have a small programming project on the side to expand your technical skills in a setting where there is virtually no stress and no deadlines.

Having different hobbies is actually a good thing in the sense that they can help you broaden your horizons while simultaneously allowing your brain a much needed switch into a “background processing mode”. This is when the subconscious part of your brain stays processing anything new or technical complex that you have done at work, so, the concepts and details are being embedded in your brain and knowledge is being formed, but, you are not actively engaged with the problem, so, your body won’t accuse the stress or effects that could be caused by a long-term engagement with the task. So, for this reason, it’s worthy to have several hobbies that are completely unrelated to coding, because they allow you to have a more balanced life and being actually more engaged and productive during the working hours.

There is also a lot of value in actively developing a small programming project as an hobby. It doesn’t need to be something huge, monetizable or even useful, as long as you can learn new things with it, it’s already a huge win! For this, what I like to recommend is along the lines of:

  • working with a new language that you might use in your job: scripting languages like Python, Ruby or even Bash are good candidates. There is a lot of orchestration and glue code being written in these languages, so, even if you learn the basics of it, you will be well ahead of the curve;

  • write a small web app and release it: in some companies, developers are responsible for the full software development lifecycle of an app, i.e., they have to write the code, test it, observe the pipelines and deploy it or at least monitor the deployment and be ready to jump in if something goes wrong; however, for many other companies, many developers are never exposed to the full development lifecycle of an app, so, deployments and actually serving their code to end-users is like a blackbox. If you can, leverage platforms like Heroku or DigitalOcean and really deploy the code and see it being served on the internet;

  • do some front-end work, if you are a back-end developer and vice-versa: this is somewhat implied in the previous bullet point: in order to release a somewhat complete app, you need to be versed in both ends of the stack, so, if you’ve never looked into any JS framework, a side-project is the perfect excuse to do so: not only it will broaden your views on programming, it will also make you more appreciative of the work your FE colleagues do and it will make you also more involved by being able to read and understand both ends of the stack;

So, you know, next time you feel like starting a new programming side-project, or if you are unsure if you should, at least, keep these aspects in mind, and, above all, understand that you can take it easy, pace yourself, discover new concepts without any extra pressure, and, well, you might even enjoy it!

Written on November 16, 2021