February 2017

I recently found out that it’s very easy to get lost in the daily challenges of being a freelancer. The lack of real structure around yourself can make it difficult to distinguish code written for work and code written for play. It has become a bit difficult for me to say stop, my work for today is done, without feeling a little guilty about something. It can be how productive I was during the day, or I perceived the quality of the code I wrote.

Those things can be solved by a different mindset and a strong discipline. Work starts and stops at a certain predefined hour, except emergencies. Whatever code I write after or before those hours, it’s playtime.

The other problem I need to solve is, what do I do in my playtime? I like to learn new things, but I also need to become better. Learning something new is quite different from working on your fundamentals. So I chose two courses of actions in my case:

  • Learn a new language: I chose C#.
  • Choose a engaging side project to work on.

There is not really anything crazy behind the C# choice. I love to learn using Treehouse and they have a course on this language, so that’s really all there is to it. It’s also something quite different from Javascript, which is the language I mostly use. I believe it’s always important to explore new things.

Here comes the real problem: what side project to choose? I thought about this quite a bit. I still haven’t found anything serious yet, only a few ideas. But I think I can list a few things that a side project should have in order to become interesting:

  • Be personal. Solve one of your problems. If the project is something you can relate to, it will be easier to motivate yourself to work on it and/or make it better.
  • Be in the realm of possible. This one is about your current skills as a developer and also about being realistic. I love video games, but I don’t believe trying to make the next World of Warcraft could be considered a good side-project.
  • Have a future. It can scale. If more users get to use your project, that would not be a problem.
  • Be open source. Two reasons: you increase the chance of having other people use your project. And it could become easier to find help if you get stuck at one point. It would most likely help with the scalable issue.

So, that is what I think a side project should have to make me work on it on a regular basis. I decided that I wouldn’t start a side project until I become quite sure that I would spend some time on it and be proud of it in the end.

Let me know if you think a side project should have different attributes. How do you choose your side projects?

As always, feel free to share and comment.
Have a nice day!

Read more