The value of pet projects
As software engineers, we’re in a position to write software not only for big business use cases but also for our own tasks.
I want to make a point that having these “pet projects” in which we’re not only software engineers but also the (only) users serves us in two ways: We directly get value from our software and can use it as a vehicle to learn.
What exactly is a pet project?
My definition of a “pet project” is a piece of software that scratches my own itches. Something that I create purely to solve a problem that I have and that I want to solve. It “scratches my own itch”.
A good example is my flightlog application.
I am kind of an aviation nerd and enjoy the process of logging each and every flight I’ve been on. For years, I was quite happy with an existing website (flugstatistik.de), but unfortunately, it hasn’t really evolved over the last few years, leaving a UI that looks quite outdated and a feature set that is okayish but lacks some of the things I would like to see. In addition, there was (and still is!) no way to back up the data stored there, which leads to formidable vendor lock-in. What happens when they decide to stop providing their service, or I simply forget my login credentials? No, that’s just not good enough for me.
So, as no appropriate tool was available, I simply decided to write one myself and voilá, a pet project was born.
Although I decided to make the source code available on GitHub, I am not only the only developer but also the only user of this application, and that’s how I want it to be. I don’t have to answer to anyone about whether feature A is useful or should be dropped instead of feature B. With no real restrictions except the time I’m willing to invest, this is a big playground that I enjoy playing in.
A win-win situation
As software engineers, we’re constantly having to improve our skills, learn new frameworks, and new libraries.
Personally, I find it extremely hard to gain experience with a new framework or a new library without a concrete use case in which to apply it. Sure, I could implement the good old pet shop over and over or invent an imaginary customer who wants to do X, but having a real-world scenario like “Create an application that I can use to log all my flights” helps me to focus my thoughts on the outcome that I want to achieve and use the tool to assist me in achieving that goal - exactly like I would in a real-world use case.
So instead of setting up authentication and authorization via OAuth2 on some imaginary project, the goal is to use Google as an authentication provider for my project, the flightlog.
Integrating Spring Boot and Spring Boot Security stops being a theoretical exercise and becomes an actual
pain in the ass challenge.
I’m happy to be in a position where my professional knowledge can help me with my hobbies, and where working on my hobbies can directly influence and enhance my professional knowledge. A pet project is one of the ways to move forward both personally and professionally, so let’s go and enjoy both at the same time!