Work is Work, as an aspiring developer you want to explore but cannot justify everything in a setting where your actions must add some sort of value to the company you work for. Even when your job is in overall great there are always these repetitive little things; tasks you do not really want, the daily routines, tools you might not be too fond of, business decisions and so on…
At work, many of us are preoccupied with long running projects. There are not always alternative tasks you can use as occasional breaks. Your brain gets tired of that very quickly. A tired mind does not evolve. Even worse, if you take your problems home and continue to think about them there you will also ruin your time off work, and showing up the next day will feel as if you never left work to begin with.
A side project is an excellent way to give your brain a much-needed change of focus and slow down the grinding gears at the end of the day.
On this subject, I would like to use an analogy learned from the world of sports:
What you do every Tuesday and Wednesday on the training field means nothing compared to the effort you put down between Wednesday and Tuesday.
This applies to your daytime job too. You cannot expect to fully evolve and grow your talent just by doing what you are required to at your workplace. You need these extra challenges to grow as a developer.
Finding the Spare Time
There might be a few people out there with spare time they do not know how to spend. If this applies to you, move on to the next chapter; let this chapter be for everyone else.
You already run your own business! You are the (Vice?) Director of Family Inc.! This job needs your attention every single day. Your employees work full-time on contracts that would make Labour Inspection shut down any commercial business on the spot. How on earth do you find some time for your own projects?
To get spare time for your project you need to organise your activities and make priorities. Look at the things you already do that only add value for yourself. Remove the bits that do not help you change your life. Make sure that every member of the family feels they get their part, that way they will continue to support you. When those activities are set, you have a certain amount of time left. Divide that time equally between time to your significant other and time for yourself, and _that_ is the real spare time you have for your project.
Choosing the Project
The easiest way to get started is if you can identity something that adds value to other people. Think of some situations you encounter daily where you would think, “I wish there was an app/website for that.”
My moment was that day I took responsibility for leading my daughter´s soccer team in a tournament. The girls are 8 years old. Everyone wants to play as much as possible, national rules regulate equal treatment for players. Parents watch from the side, and you can be sure that the plan you made before the match disrupts in a couple of minutes.
After a quick search on Google Play I discovered some apps that let you manage these scenarios but they all were very complicated. Some required setup of squad numbers and formations. I managed to find two apps catering to my simplistic needs; the first one cost $1 and had an ugly design, the other was free with an ugly design.
I decided I wanted to create something simple and beautiful, so the idea started to materialise.
Open Versus Private Project
It might be a good idea to open source the project to attract potential teammates. This is more difficult on a private project. Sites like GitHub and SourceForge provide you with a code repository, project wiki and project management tools. All for free, as long as the project is open source. Most IDE vendors will allow you to use a community edition that usually comes for free for individuals and free for teams as long as the IDE is used to contribute to an open source project.
Opening the project makes it searchable and accessible for everyone, including your future employers. Asking for help on public forums becomes much easier when you don´t need to worry about picking bits and pieces to explain your problem. You can refer directly to the project and anyone interested in helping you can see the problem in its entire context.
Attention and followers inspire. After all, if you are the only one with insight in the project and the only one with any real benefits from its value, then where will your motivation be when things get difficult?
If you choose to open-source the project you have already taken your first steps into the public sphere. The next step would be to write something about your project. Chances are, if you write about your project in a separate blog, you will get more attention than if the only writing is in the commit logs. You could write it like a diary, a task log, or a change log. It is up to you.
Writing might come hard at first but eventually it gets easier the more you post. Did you find a workaround for a bug in a library you are using? Write about it! Did you find a cost-effective way of describing granular database changes between synchronisation intervals? Write about it! The more you write, the greater the chances are that someone will get interested and start following you.
Your project blog is also a second way to show off when applying for a new job.
Choose free tools. Enterprise tools will make it difficult for other people to help you without having access to the same tools. If you have a license from work you can use at home you will do well as long as you stay on that job. But what do you do the day you want to change jobs? Do you choose your future employer based on what tools you will have access to? Or do you choose your future employer based on what career and personal development opportunities they can provide for you? Enterprise tools can give you a flying start on your project, but will later on require annual subscriptions and/or upgrade fees. If you go that route and later decide that you want to try a free tool, you might face the dreaded vendor lock-in. Nothing is impossible, but I am sure you would rather spend your time developing new features than manually converting your project from one format to another.
Projects built upon free tools are often built on the assumption that some day you might want to switch to another. Free tools cannot compete on product cost. Vendors of free tools know that people switch more often because they have not invested any money in the product. What they do compete with is features and ease-of-use. The advantage here is it’s usually very easy to convert your project from one tool to another, since free tools often rely on community standards to establish their structure.
If you are considering starting your own project, I would recommend not implementing any services that require financial or maintenance commitments. If your project relies on any shared web API or data service backend you might see yourself falling back to the same tasks and obligations you wanted to get a relief from by starting your own project. If you have a project where the end product involves collaboration, my advice is to provide your end users with the necessary tools and instructions to set up their own back-end.
If you are reading this and don´t have any side projects going on you should really consider starting one. If you start organising your spare time you might be amazed or frightened at what you are left with. Nevertheless, give it a try. It will be fun, and it will be a good practice no matter the result. Choose a project type that allows you to progress with the pace that is appropriate for you. Don´t start something that will make you feel bad for not committing enough time to it. Finally, don´t bring your entire enterprise toolbox from work into the project. Go independent and keep the door open for contributors.