Every developer should have a side project I’ve heard. And yes, I can agree that it can be good for your personal career but it isn’t easy to get started with. If you are one feeling that, or if you are just interested in my story and how it became reality for me, please continue reading!
I always try to improve my programming skills in the best possible way. As a developer you are solving problems most of the time of your day-to-day work. This problem solving tend to be tied to a specific stack or programming language that you are already familiar with.
It is nothing bad about that but to broaden your skills outside your comfort zone you need to put in some extra effort, and that is hard. You can play around with hello world-examples and coding katas but for me, it took me nowhere.
I currently work at a digital agency as a developer and one day I identified a problem. Our company have invested well in health and wellness in form of a gym and instructor-led training activities such as Yoga, Pilates, Circuit Training and much more.
A year ago (before my side project was born) to be able to participate in these occasions you had to sign up by communicating with our agency assistants. They then took notes for the participants. They kindly informed you back either: yes, you have been enrolled / disenrolled or: sorry, this occasion is full.
I noticed this process and started to think that there should be an application that replaced this work and that it would fit perfectly as a side project. And so it did. We now have a fully digitalized booking system for training activities!
It’s been almost a year since I shipped the product and recently I evaluated my work and here I’m going to share my findings from this project, and what have been essential for getting things done.
Find a problem to solve
What made sense to me was that my product would actually solve a problem. This gave me momentum and helped me motivate myself.
This is probably the hardest one but it will make you commit. It does not have to be a big problem, it can basically be anything. If you are employed by a company, a recommendation would be to check with them. Do they feel the absence of any technical product / tool that can help them? Ask!
Github with it’s open source culture is full of different projects that need contributors. Check out Up For Grabs.
Nothing is perfect
For the product that I built I started to think big, wondered, and felt that I needed to deliver something that was perfect.
Let’s face it, your work will never be perfect. At some point you just have to ignore that when starting a new project. We would all love the perfect idea that no one have ever thought of or implemented yet, but there is no such idea. This is something that I’ve learnt throughout the process.
Keep it simple, don’t get lost in details
In my case with the booking application I decided to start off really simple: to initially replace the manual work by implementing an easy web interface. All other features would have been improvements (since nothing existed at this point). I just needed to keep telling myself that. And when I finally got comfortable about it, I started to become productive.
Side note: The application has been running for almost a year now and no one has ever complained about the minimalistic user interface I initially shipped. Why? Because the application does what it should and doesn’t need a fancy UI.
It’s just a matter of execution
I’ve seen ideas that just remains as ideas, and never really turns into something tangible. My recommendation is that if you believe in something, you should just go for it! Make a plan.
This goes hand in hand with keeping it simple. If you cannot manage to get your product up and running pretty soon, it will probably start to decay.
Start with the simplest solution of the problem you are facing. Ship a minimum viable product that fairly soon hits the market. This will give you an early response to your work.
Evaluate your work and be proud!
What I never did until recently was to look back and analyze my work. What have I actually delivered? Learnings? Could I have done anything differently? These questions are good to ask yourself.
Besides the findings that I’ve presented this project has taught me a new programming language and how to organize my work. And as the headline for this post states it has also made a huge impact on the employees since they easily themselves can manage training activities. So, check on that :)
I try to keep it as a habit to continuously improving the product as much as I can. And it is a lot easier now since the product is being used by others, so I get their input and their ideas for free— which in turn generates more work :)
I would love to hear your thoughts. What have worked out for you?
If you are interested in details about what technical products I used for this application I might write a more technical post about that :)