Side hustles as a software developer

Have you ever tried to implement a project end to end as an employed software developer in your spare time?

In case you did, you may know that it could be very challenging every now and then. In case you are an employed software developer and you have never tried to work on uncontracted projects in your spare time, I highly recommend giving it a try. Why do I recommend this? Besides the challenge to take the time to implement something as a side hustle, it is very likely that you will face yourself with tasks that you usually do not do during your daily work routine. Those tasks will broaden your horizon and you have the possibility to choose your own conceptual and technical challenges.

If you manage to launch a side project into the public internet, app store or whatever and wherever you prefer, it is an eye opener. I do speak from my own experience: Countless started side projects still embedded in my mind, documented as a site map, saved in a cloud storage, brought to a design document and saved in a backup, pushed to a code repository in git, all have one thing in common: all of those started ambitious attempts are not finished yet and will probably never be.

You are reading this article here on my personal website. A side hustle of mine, I launched successfully and I am proud of it. To go from the start to the launch I thought, planned, designed, configured, setted up, desperated, procrastinated, translated and coded several hours and days. I know there are easier ways of doing it, but I wanted to have my very own thing and had a couple of ideas how I want my personal website to be or not to be. This reasonable success that I made up until now, leads me to the thought to share my success and my failure and what I learned from it. If you want to know more about my personal website please go to about page!

The following section contains a list of challenges that I faced during successful and failed projects, the why and how I failed or succeeded and what I learned from it and you will be able to learn from it, if you are struggling with the same or similar challenges.

Don’t give up!

I started countless side projects, but I was not able to finalize most of those. Some of those had high potential, for example a project to implement a headless CMS in 2010. A headless CMS is an API first CMS and this software is in high demand nowadays. Back at that time, when I started concepting and implementing this a bit, all of them integrated the frontend and the stack to implement customer facing views, if I remember that correctly. There is no guarantee that a CMS implemented by a single person could have the same impact as the open source big players like Strapi or a SaaS solution like Contentful.

But I believed that the idea was a good one, back in 2010 and still believe today that I might be able to come up with some fresh detailed features that might be handy for such a software.

So the question at hand is, why did I gave up on that?
The truth is, there were and there are various reasons. My investment at that time was a small amount of money for the hosting and a not so small amount of my spare time. I do not know exactly how much time I spend on that project, for the concept, setup of the repository, coding, build and deploy scripts. But if I take a look at the remaining source code, the sketches and the documentation of the concept that I created at that time, it must have been a noticeable amount.

The point is, if you do not have numbers on how much time you have spent on a project, it is more likely that you will give up on that, because your effort might no longer be present in your mind.

Another reason to give up on a side project are a couple of lightweight alternatives to spend your spare time on. Some of them have the potential to consume your remaining time, actually dedicated to that side project. For me those are: playing video games, watching one episode after another of a series or infinite scrolling on social media. Those alternatives to spending time implementing a side project, lure with fast but not sustainable rewards that are a number one reason to procrastinate. My number one priority is of course spending good times with my family and friends, my daily job, doing exercises and team sports and some other duties. That being said, it is not so clear for my priorities two and three. As I already dedicated some time for the side project, those are in concurrence and often it is this lightweight kind of entertaining myself that will win over spending time on the side project.

If your main goal is to entertain yourself with side projects, it will be just another option from many to pick from and as soon as it gets unamusing it might result in another side project never going public. If you are aiming to launch something to the public, it always comes with some challenges that might not be entertaining. For that reason it must have a dedicated priority and the clear goal to finalize it to that certain state you are heading for, in order to publish it.
 

Strategies

In the following paragraphs I will describe a bit what strategies helped me to push my personal website to public:
In a side project no one has to control the progress you have made, except you. In fact, that results in good and bad parts.
You could work more relaxed without pressure, because you are in control of your time and deadlines. You do not have to speak to people from other disciplines if you decide to do everything on your own and if you are capable of doing this. On the other hand a little bit of pressure might provide you the necessary motivation to accomplish what you have started. You may tell friends, colleagues or your family about your ambitions or ask them for feedback on step results. Another way to achieve that kind of pressure is to build an audience around what you are building on tools like Youtube or Switch as I did, while implementing this personal website you are currently reading. That motivates me to proceed until a certain thing is finished and it might help you too. 

Time tracking

If you consider giving up because of the effort that you are expecting if you continue working on a side project, I Recently started to use a simple table sheet containing 4 columns:

  • title of project and task
  • description of task
  • date when I did that task
  • effort spent on task in hours

If I am about to consider giving up on something, because of the efforts to be spent for my future self, I will have a look at the numbers to get to know what my past self has already spent on it. With that in mind my present self has a much better base to decide whether to proceed or not and I recommend you to keep track of your effort to achieve just that. Your spare time is the currency you pay for getting a side project to a certain state. If you know how much you have actually spent, your present self is able to make better decisions. 

Nudges

An important aspect, that influences the decision if you keep on grinding on a side project or put it to the archive of started but not released projects, is the so called Nudging or Nudge theory (https://en.wikipedia.org/wiki/Nudge_theory). Like mentioned above in the example, to spread the word about what you are working on and progress you have made to friends, colleagues or followers, is an example for a nudge that keeps you going. While an example for a Nudge that favors giving up on it, would be to play video games as a replacement with faster success stories for your reward center. If you are aware of the Nudge theory you can use this knowledge to guide yourself to the success you are aiming for.
But the root causes that lead to giving up on a side project are countless. Let me show you some others I had experienced during my work on side projects.

Scope and Complexity

Another very important factor for a successful release of a side project is the choice of scope and complexity you can handle in your spare time. You should adjust those parameters whenever circumstances have changed.

A scope that appears to be small in comparison what you are able to do, doing your daily job, could be hard to handle, if you have a limited amount of time during a week or month, due to various interruptions between working sessions and you have to catch up with what you have done in the last session and what is next every time. An adjustment of the project scope might be necessary, when other conditions have changed.

For example if your amount of time is less, because you decided to exercise more or you have a more time consuming working commute, your side project that appeared to be manageable, could end up in a tremendous project. Keep in mind that a change in your life situation could change your priorities probably. Reduce your side projects scope and complexity if you are in need to do this and you are aiming to release it in a certain amount of time!

Side projects appear to be one-band-shows more often than not. Because of that you have to learn and train new skills during the project. Sometimes it turns out that learning a new skill is not as trivial as thought initially. It is okay to be optimistic about that, when you start. But proof your theory that it could not be hard to learn that new skill by starting with a very simple task which will be valuable for your number one priority, which might be to have something to release to the public. Let us consider you are a coder and you want to craft your very first design. You will be well-advised if you start with a very minimalistic design approach for an important part of your overall design. You should make compromises with yourself if a result is passable and rather proceed with the next task then aiming for the perfect result. You may underestimate tasks, like I did when I thought about the time it will take to craft this article. In order to write this article I needed the idea, had to think of the outline and the message, had to write it down, translate it, sometimes I need to do some research for the right pictures and those need to be cropped or are in need for a color correction and so on. That is a lot of work to do. You will realize this only if you do it, as it appeared as done already in your mind. From your daily business you may know the time consumption of your work only and the time consuming work from others is not so present in your mind. Besides that you may not be an expert in this field. In that regard, I send out kudos to my dear colleagues who deliver high quality designs, content, setups, build pipelines and a lot of other things. Thanks for your work – you all do a great job!

If finishing and releasing a first iteration of your project is your main concern, you should keep an eye on the tasks you spend your time on. You should be in control if you are on the path to perfectionism or still in the pragmatism area which should be preferred to finish it!

A result oriented mind is a good starting point, but dreaming too much of the success of your project may hinder you to cross the finishing line. I tend to build even more amazing things whenever my mind is in that mode. Those exciting and amazing new features, may result in a better product or not. More often those shing little things are complex, increasing scope and are most of the time no more valuable than the release of your project into the public. Sounds familiar and obvious, but I cannot tell that to myself often enough: If you have the opportunity to choose your own challenges, prioritize releasing something that has the smallest amount of value that you can think of. Do the same thing in the next iteration and so on.

Prioritize

Learn new skills or release

Those amazing features you want to add on top of your scope, I wrote about in the previous paragraphs, may have the potential to decrease your motivation to proceed. In my experience it is likely that you end up with the time consuming activity of having to learn another new skill. If this skill required is not familiar and has a steep learning curve, it could be a trigger to throw in the towel on your side project.


An important lesson I learned doing 10 years of side projects with very little success stories on releasing something so far, is to prioritize learning skills over releasing something. I learned that doing that will even teach you more than the other way around. You will cover yourself with known unknown tasks. Meaning you are aware there is something to do, that you do not know how to do. In addition to that, aiming to release the project comes with a lot of unknown unknown challenges. That means that there are some challenges ahead you are not even aware of. One prominent example I was faced with a couple of times, was configuring servers for cache or SSL certificates and other unexpected things, if I was trying to release a project for the first time.


In contrast to a project that focuses on learning a new skill, which is finished whenever I had the opinion that I understood the concept I wanted to learn. A simple proof of concept or finishing a tutorial with a very tight scope, focusing on what you want to learn does the job well.


Often those unexpected challenges in projects with the aim for a release are often as valuable or even more valuable on your daily job, for other side projects are even to get a new job, as those you wanted to learn deliberately. This is because of the broader context in which you apply those. For me the clear winner is to aim for a release over doing side projects for learning a new skill only.