Side Projects for Software Developers: Tools and Practices

Here we are! This is the second article from my series explaining how to succeed with your side projects. The first part is here.

I’m sure by know you read the first part every time you go to bed so you won’t have difficulties to link it to this article. If not, I would advise you to read it. Otherwise the benefit you can get from this article won’t be as valuable.

Enough theory, we will focus on the practice. What techniques and tools did I use to successfully build the first beta version of my side project Sharetoall?

The tools described here are my personal preferences. Keep in mind that you can use any equivalent application which might better fit your needs. The most important is to understand the benefits they bring to your workflow and what problems they solve.

You should know as well that I’m not payed by anybody to speak about the applications I will describe in this article.

Obviously if you have other suggestions let’s help each other: the comment section is below, like any other blog.

1. Side project ideas: catch ‘em all!

As stated in the previous article, it’s essential to catch the ideas coming to you. Don’t let them go away before writing them somewhere!

More you will put ideas into your metaphorical “idea bag”, more ideas will pop up in your mind.

A note-taking application like the famous Evernote is perfect to create this idea bag. I used it for many years… and then I found Laverna which is way better for my needs.

Why?

Let’s do a little comparison:

  • Laverna is free and open source.
  • Evernote is slow, especially when you have a lot of notes. Laverna is way faster.
  • Laverna save your notes in plain text (markdown). There is no weird formatting problems, it’s simple to backup or copy your notes elsewhere.
  • You have the possibility to encrypt your notes with Laverna. A good point for your privacy.
  • Evernote is too cumbersome. A lot of functionalities are useless to me. I only need to take plain text notes.
  • You can host your own instance of Laverna on your server.

Since everything has drawbacks, here are Laverna’s ones:

  • Images don’t synchronise between the different devices. It shines as a pure plain text note organiser.
  • You need to setup a Dropbox (or RemoteStorage) account to synchronise your notes between your devices.
  • You need to export and import your settings once via a json file from one computer to another to synchronise your notes.
  • There is no app for phone (but an Android app is in development).

side project mindmap Some of my notebooks in Laverna for Sharetoall

How Laverna can help you catching your ideas? Here’s my workflow:

  • I have a special notebook called Miscand I note everything which sounds interesting, from an idea to a friend advise to a movie recommendation. At any time, anywhere. You just need a browser on your phone and internet access. Something pretty rare but I know AOL does have some good offers.
  • Every Saturday I classify these Misc notes. If I have an idea for a side project, it goes to the Idea notebook itself inside the Web - Project notebook.

From time to time I go to this idea bag and decide if I want to build a side project out of it. Sometimes I link multiple ideas with a mindmap. The process can as well gives me other ideas.

Don’t neglect any idea! Write everything and sort them quickly on a regular basis.

2. Build your side project’s goals

It’s essential to determine the goals of your side project. They will be an important source of motivation for you to get things done. Without goals, you will lost interest to continue and achieve your side project.

Here the goals I’ve written in my note system for Sharetoall:

  • Help people to share knowledge
  • Free platform based on donations
  • Share content on multiple social media at once
  • Simple interface without any hooks
  • Ask / save a minimum of user’s data
  • No addictive interface - no notifications / pushing

When I write down my goals I try to be:

  • Very simple
  • Descriptive enough
  • As precise as I can

This is meant to be a quick reference you can look at when you feel your motivation is going down. That’s why it needs to be simple and easy to read. The purpose is to remind you quickly why you began your side project at the first place and why you should finish it.

The fact that Sharetoall can help people to share knowledge and great contents thanks to a very simple interface is very motivating to me.

It can be very useful as well to see if your project departs from your goals. If it’s the case you can either way:

  • Change your project tasks to align them to your goals
  • Change your goals

These goals are the very general ones. I have as well more precise goals I sort in three categories:

  • Short term
  • Middle term
  • Long term

These goals are much more descriptives. For example:

  • Short term
    • Sharing messages on Linkedin and Twitter
  • Middle term
    • Possibility to schedule messages
  • Long term
    • Creating a mobile application
    • Staying humble while being rich and famous

With these goals written you exactly know where you want to go. It’s important to have them somewhere.

Repeat after me: even if it’s fun to develop side projects, it can be a challenge to finish them. The motivation ans purpose these goals provide are essential.

3. Ask for feedbacks

I didn’t ask for a lot of feedback when I was developing the first version of Sharetoall. The reason is simple: the first version was only answering my needs.

I like sharing interesting articles I find via social media. It’s a good way for me to spread interesting ideas, without necessarily measuring the impact of what I share. Even if only two people learn from them, it’s already something.

I was paying for Hootsuite in order to share on multiple social media at once but of course I didn’t need 90% of the features. On top of that:

  • I wasn’t sure what they were doing with my data
  • It was really expensive

I created my goals from my own needs. To me it’s the easiest thing you can do: you know what your needs are and therefore you can formulate your goals in a very precise and accurate way.

Now that Sharetoall is a MVP, it’s the good moment to ask people if they would be interested by the service.

Therefore I need to know if people would:

  • Use the application
  • Be interested to have more functionalities

But wait: who are these people? When you’re doing your side project, it’s important to define who you want to reach and solve the problems you want to solve for them.

I defined my audience as knowledge workers (mainly developers or freelancers) who want to share articles, ideas and knowledge easily.

In short I try to find a category of people which has the same needs:

  • I’m a knowledge worker myself. It’s easier to speak and be understandable to people who have a very similar work and background than mine.
  • Since I’m included in the audience I want to reach, I know where to find knowledge workers. Why finding them? To communicate with them about Sharetoall. Concretely on Reddit, Stack Overflow, Slack, forums…

The goal: increasing my chances to have feedbacks from the people who might be interested by the service I offer.

Now a very important advise: if you’re only targeting others with your side project, ask them feedback before writing any line of code. If nobody wants it, no need to build it.

4. Enjoy the ride

Frustration was another reason why I began this side project. At that point I was working for a company who needed a CMS-like application. We chose to use the PHP framework symlex for its simplicity and we planned to use Vuejs for the frontend.

I’m definitely a backend guy but I saw the opportunity to learn more about a modern JavaScript framework. Moreover Vuejs looked pretty interesting.

Unfortunately the management saw VueJs as “too complicated” and we ended up using jQuery.

Frustrated, I decided to use the combo VueJs / Symlex for Sharetoall:

  • I know well PHP and I judged the project too complex to use another language. I didn’t want to add more difficulty since I knew it would be difficult for me to build the frontend.
  • Symlex was simpler, more flexible, more testable and faster than other PHP framework I worked with (Symfony 3 / Doctrine ORM I look at you).
  • I don’t like jQuery. I’ve always seen developers doing spaghetti code with it. Modern JavaScript frameworks provide a welcome structure and are pretty easy to use.

With Sharetoall I could:

  • Experiment without time pressure.
  • Strength some weak skills (JavaScript, “DevOps skills” like setting CI and CD pipelines).

I made sure, even before starting to build the application, that I would enjoy building it. This is very important: you need to enjoy the ride!

mindmap action map screenshot

Let’s talk organisation a bit.

The heart of my organisational system is a mindmap which helps me to follow the framework of Getting things done. I didn’t invent this concept. I bought a course on Udemy which describes everything.

I’m not usually a big fan of Udemy courses. I think the content is most of the time lacking depth you can find in a good book.

However I find this one pretty relevant, especially if you search an efficient way to organise general projects you have in life. Don’t get me wrong: I like the unexpected and you don’t have to plan everything, even if you use a similar system.

In short this method brought me a very general workflow for everything I want to achieve.

You might wonder dear reader: why using a mindmap?

Simply put it’s a very good and efficient way to organise information:

  • You can find everything you need on one screen, in one document, using one application.
  • Branches are easy to fold if you want to focus on a specific part.
  • It’s very visual and help to link ideas together. Linked ideas are easily remembered and can create new ideas!
  • You can create link between the mindmap nodes and your notes ( using Evernote or Laverna).

This mindmap gives me a global overview of what I want to achieve now or in the futur, including the side projects I want to get done.

For this specific mindmap Action map I use Mindmeister which has a free option limited to 3 mindmaps. The benefit? It’s easy to personalise and I can then access it easily from my phone or any computer.

What about the side projects? One of the branch of my mindmap is dedicated to them which brings me to the next point.

6. Time management and life balance

Time management is very important if you need to squeeze your side project between your full time job and your obligations (family, friends, your passion for Disco and whatnot).

Each week I allow myself a precise amount of time for each projects I have on my mindmap:

side project mindmap

Depending on the side project I measure the work done in units of time (25 minutes each) or in achievements.

You can see for the side project testomatic I allowed myself to work 4 units of time (4 times 25 minutes) for the whole week. Since I was close to finish the first beta version I worked on it 18 units of time. As you see I keep the system pretty flexible. Sometimes I will do more, sometimes less.

For other projects like “Post processing picture” (I really like photography) I don’t count in units of time but in achievements. Concretely this specific week my goal is to process 4 pictures and I didn’t process any.

This system allows me to set very concrete goals. I don’t create stress trying to achieve specific tasks during the week. I never know how long they will take.

To achieve them I try to keep some regularity.

How? For the “Post processing picture” side project for example, I know that each week-end I do process 2 pictures the Saturday and 2 pictures the Sunday after my morning routine.

This is a good way to build habits. If you work on some side projects regularly after another specific task (like a morning routine) it will be way easier for you to do it automatically, week after week.

Why using time units of 25 minutes? Simply because I use the pomodoro technique. When I begin working on one of my side project I always run my pomodoro application on my phone.

I personally use productivity challenge timer on Android which offers as well a ranking system and time tracking functionalities. That way I know exactly how much time I spend on each projects and the ranking system provide some more motivation.

side project mindmap To me the best pomodoro app on Android

You can use as well a simple timer for your pomodoro if you wish.

You may ask yourself: why should I follow this pomodoro thingy?

  • Since 25 minutes is pretty short, it’s easier to begin to work without too much friction.
  • Short period of time oblige you to be very focus if you want to achieve something.
  • It always remind me how much time I spend on a project while working on it. Losing track of time can have consequences when you have other obligations.
  • It’s easy to lose track of time because you try to solve a problem or a bug. The pomodoro technique will remind you every 25 minutes that you might solve the problem more efficiently another day.
  • It avoids the parkinson law effects. We naturally try to spend all the time we allow ourselves doing the task at hand even if it can be achieved in less time!

In my Action mindmap I can write a description for each project’s node. Therefore every week I write the time I spent on each side project in there. Then I summarize every 6 months how I spent my time. The result?

From July to December 2017 I spent 86,25 hours on Sharetoall. It’s roughly 10 days working 8 hours a day. I already had the backend and a big part of the frontend at that point.

Working a bit everyday for 6 months allowed me to:

  • Being way more efficient than working 10 days in a row for 8 hours / day.
  • Concentrate on the essential parts of the project.
  • Build habits. After a while no need to push yourself to begin working. Doing become an automatism.

Another little trick: when I don’t feel working on one of my side project, I apply the “10 minutes rules”. If after 10 minutes working on it I still don’t want to continue, I stop.

Difficult to find excuses for only 10 minutes of your time. The best part is: most of the time you will work more than 10 minutes!

Beginning to work is the most difficult. This little tactic makes it easier. Very simple and effective.

7. Smaller is better

As I was writing in the first article of this series: dividing your side project into little actionable tasks is utterly important.

To do so I simply use the Kanban methodology with Trello.

side project mindmap

As you can see I use five columns. From the left to the right:

  • In the column Version 2 are the tickets for the next version of Sharetoall.
  • The second column is the backlog of the current version. Every tickets which need to be achieved for the current version of Sharetoall are there.
  • In the column in progress are the tasks… in progress. A ticket stays in progress if it doesn’t work yet or if I didn’t write unit tests for it.
  • The testing column is the realm of tickets which need to be manually tested or (even better) tested with functional/acceptance tests.
  • The done column is self explanatory. Tickets in this column can be part of the next deployment or already in production.

I have rarely more than one ticket in the in progress column. It’s important to work on one ticket at a time. Trying to switch between different things is a waste of time and energy.

You might wonder: when and how do I create these tickets?

  • I first create functionality tickets. They describes what I want to achieve.
  • Then I look up what needs to be done in more details and I divide it in smaller tickets.
  • I often divide these tickets again and again till I have the smallest tickets possible.

Let’s take a concrete example: for Sharetoall I wanted to send messages to Twitter via its API. Here’s an illustration: first I created the ticket “send messages on Twitter”, then I divided it again and again.

side project mindmap

Finally an important rule: I don’t do any time estimation for my tickets. I let that to managers who want their functionalities as soon as possible without evaluating the cost of technical debts. I am not a soothsayer and you are not either.

If I really want some estimations I use shirt sizes: XL for long tickets, XS for very short ticket, L and S in between.

8. Building habits

Your best way of success is to build good working habits. They are powerful and will help you tremendously. I’m not exaggerating.

How to build these habits?

On my Android phone I use the application Loop, a free and simple habit tracker. Loop follows the old “don’t break the chain” technique: put an “X” on a calendar every day you do a certain activity and after a while you will try not to break this nice “X” chain.

side project mindmap

Perfect if you want to work on your side project every day or at least on a consistent basis. You can configure it if you want to work on your project only two times a week for example.

Loop will track as well your progress in your habit building and the past chains you broke. It has been hugely effective for me.

If you don’t like Loop you can try another similar application. There are a lot out there.

To pursue your side projects and goals you need self discipline. Don’t be afraid or repulsed by the idea: self discipline is not something bad which will transform you into an insensitive robot. It won’t take away every pleasures you have in life. What it can do though is bringing more control in your life.

My personal experience with self discipline is the following: avoid any shortcuts when you are learning or creating. Embrace failures and try again. That’s how you will get the most… from anything.

It might sound difficult to do and it is. At the beginning, only. Roughly the first month. Then you will achieve without even thinking about it!

More habits you build in many areas, better your general self discipline will be. It makes sens: since habits bring you welcome automatism, you can use your willpower for other tasks. At the end, self discipline is just a synonym of self control.

It doesn’t cost anything to try, does it?

If you are interested by the idea of willpower I would strongly recommend you to read The Willpower Instinct which is the best book I could find about willpower and self discipline so far. It’s pretty short, simple, easy to read with a lot of actionable advice.

9. Avoid pressure

Repeat these points every morning as a mantra:

  • The goals you set or your rank on your pomodoro application don’t matter. What matter is you trying to accomplish your goals. Don’t stop trying.
  • If you don’t achieve everything you want this time, that’s okay. You will do better next time. Failing is not a bad outcome but a possibility to grow.
  • Don’t set any hard deadlines and don’t beat yourself up to finish a task.
  • The most difficult is to begin a task. Just force yourself to work 10 minutes and see if you want to continue. If not, stop working. It’s that simple.
  • Time constraints can give boundaries: decide to work on a side project for a limited amount of time per week and stick to it. No more, maybe less. At least most of the time.
  • What’s important is working on a consistent basis. Doing a little bit every week for one year is better than beating yourself up for three weeks and giving up, exhausted.

Being conscious of your limits is really important to be able to achieve your side projects. Your possibilities are infinite and these little advice can help you avoid pressure.

10. Fighting your Perfectionism

Perfectionism doesn’t necessarily bring any value. If you spend hours making your code perfect and then never modify it, it was a waste of time.

Being too perfectionist can multiply the amount of work you need to do before releasing your side project. More time you will spend on it, more motivation you will need. According to a lot of studies (apparently) willpower is a limited resource, don’t waste it.

It’s always possible to fine tune everything. The solution is simple: you need boundaries.

Here are mines:

  • I write my code and make it work, even if it’s totally ugly.
  • I write my unit tests at the same time to see if it’s really working as expected.

Since I know roughly what functionalities I want to implement in the future I refactor the code which will change.

I write sometimes acceptance tests as well when I use third party APIs. In Sharetoall I obviously need to use Twitter and Linkedin APIs so I have acceptance test to see if my implementation still work with them.

That’s all. If I wanted to fine tune everything for hypothetical functionalities I might never implement, Sharetoall would be far from being released.

Remember that it’s psychologically important to get your task done and go forward. Nothing is more depressing to spend weeks on a simple task because you’re never satisfied of the result.

It’s side project time!

I hope this series of article will give you some keys to begin, implement and successfully release the side project of your dream.

Beginning and releasing a side project is not difficult. Creating leverage for a better self control and time management is essential and will help you and every aspect of your life. Yes it sounds exagerated but I strongly believe so.

Don’t think you are too stupid or lazy to success with your side projects. You are not. You just didn’t find the best way to tackle the work efficiently.

If you have other advice or tricks for fellow side project creator out there, don’t be shy and let a comment!