The purpose of this blog post is to convince you to devote more time for your personal projects or to start a fresh project if you don’t have one yet. The motivation for writing this is that work-related projects usually have a set of attributes that are shared between all projects – I argue this will eventually result in narrow-minded developers who tend to stay in their comfort zone. In my opinion, this leads to productivity losses and not-as-good-as-they-could-be design choices in the long run.
The biggest difference between work and hobby projects is having a deadline. At work, deadlines usually force us to deliver without an option to evaluate different approaches for the topic we are working on. When working on a home project, you don’t (usually) have a pressure for delivering within time limits. Thus, you are free to iterate over a number of different approaches, even non-conventional ones. You can even change some parts of the used technology stack in the middle of the development of your home project without worrying how much it’ll cost. The cost is measured as a loss of your spare time, which is actually not a loss if you enjoy what you’re doing.
Home projects are a way to explore new technologies that you are interested in. You can focus on topics that you are truly interested in. If you want to learn something new, I encourage to wrap the learning goals into a project. For example, if you want to evaluate some new Python library, try to come up with a project in which you could utilize that library. When the learning idea is wrapped into a project, there’s higher change that you won’t get bored while learning because you have clearer vision of what you’re aiming for. In addition, I think a hands-on project is a great way of learning the underlying techniques in depth.
Personal projects are there for challenging yourself, to try something that you don’t have any prior experience with. For example, if you have been a web developer for your whole career, start an embedded project. Get out of your comfort zone! As a side effect, you most likely start thinking outside of your (working) box. Further, when you get out of the safe box, you probably come across ideas that are also applicable at work. At least you’ll get new interesting topics for coffee breaks.
Throughout this post I have been talking about home projects without mentioning open source projects. In my opinion, contributing to existing open source projects has surely some of the benefits discussed above. However, the bigger the open source project, usually the stricter the processes are around it. On the other hand, personal projects are a way to switch to a complete freestyle mode where you can define all development practices yourself. Of course, it is desirable to open source your homemade masterpieces for others to enjoy them.
Without a doubt, spending time on home projects is not an option for everyone because of their life situation or whatever reason. However, for those who don’t have that reason, my humble opinion is that spending time on home projects is an efficient practice for boosting their game.
In my next blog post, I’m going to give a practical example of the topic by diving into one of my latest home projects. As a teaser, there are three keywords describing the project: Python, image processing and memes, two of which are vital parts of Adimian culture and image processing is not one of those. Stay tuned!