Last update: 2018-09-09
It’s 2am. Your eyes are tired, you know you’re coding nonsense but you can’t look away from your computer. With a shacking hand you catch a bottle containing a mix of sugar and caffeine. This horrible bug in your code won’t let you in peace till you destroy it.
You spent five hours non stop on it. But still, you don’t see the end of the nightmare. Your bed call you, but you don’t listen. The code is the most important.
Your side project is the most important.
Two month later, you almost forgot about your side project. You didn’t touch it since this freaky bug… You might have spent too much time on it. You burned too many neurons during this fatal night. A little part of yourself still love it, but the pain was too vivid.
Now the motivation is gone…
You want to create the side project of your dream? This little story described exactly what not to do, dear reader. I can relate to the story above: I began numerous side projects since I caught myself coding. My first program in C was a side project, 18 years ago.
This article will describe the mindset you need to successfully begin, enjoy and finish a side project. This is hugely important: without the good approach, your side project can become your worst nightmare.
The second article will give you the concrete tools and practice to achieve your vision. It will give you concrete examples to illustrate the theoretical points I present today.
But first things first: you may ask yourself, you crazy philosopher, what I exactly mean by “side project”?
It’s a personal project you do aside of your tiring and full time job / school / whatever you do all day. Simple.
With this question out of the way, let’s begin.
1. Software project ideas: where to find them?
It happened to the best of us. You want to begin a side project for numerous reasons, but you don’t know really what.
I can see you already sitting in front of your computer, Google under your fingertips in quest for ideas. They are somewhere, you know it, and you will find them.
Like a lot of people you think ideas need to be pulled out of the void. It is something you can get actively. Like buying a chocolate ice cream. You want it, you go to the mall, you get it.
Surprise surprise dear reader: it’s actually easier to let ideas come to you.
You can find good ideas on the web, I can’t deny that. More precisely you can find inspiration in everything around you:
- Speak to people. They love to complain about their problems. If these problems can be solved with a software, you have a valuable idea in your hand.
- Participate in side communities like product hunt or indiehackers.
Most of your ideas will pop up without you searching for them, created from stimuli you sometimes don’t even have conscience of.
You can basically have ideas everywhere: while taking your shower, walking in the street, speaking to people. You need to catch them when they appear or they will disappear as quickly.
Taking note of your ideas is therefore essential. Note every ideas you have, even if you think they are awkward or stupid.
Ideas, even bad, can inspire you. Inspiration will create more ideas. This is a virtuous circle you need to aliment. Your “idea bag” will grow bigger and bigger and you will only need to develop them to their full potential.
2. A side project needs clear and precise goals
Ideas are good but it’s not enough. Your side project need to serve one or many goals. It needs to have purposes.
Goals are essential to keep your motivation flowing. It will help you not to abandon your side project in a dusty forgotten area of your mind.
They need to make sens to you and be inspirational.
Binding your goals to your passions could be a good motivational engine. Let say you love cooking: you can build an application which can help you cooking. It could make you more efficient. It could simplify some tasks you need to do for achieving your best dish.
Since you are likely to be a developer, I’m sure you had this thought at least once: “It would be nice to have this tool to do this boring task”. Well, here an idea for a side project with a clear goal.
Making money can be a goal as well, but being engaged on a more emotional level is more effective. With a side project you can never be sure that money will flow like a river. It can be doubtful, and doubts can make your side project way more difficult to continue and achieve.
Try to make your goals as precise as possible. More they will be, easier it will be for you to remember why you’re building this side project. Visualize your goals and you will keep your motivation flowing.
Finally your goals need to be realistic. If you are alone on your side project and you want to create a streaming platform to dethrone Netflix, it might be a bit too ambitious.
At the end good goals will depends on you: what you are passionate about and what you can achieve. Remember them when you feel demotivated.
3. Enjoy the ride!
Having a clear set of goals is one half of a good side project foundation. Goals to keep your motivation on the long run.
On a short term you need to enjoy the building process.
Maybe you are very curious in some technologies and you want to learn them? Maybe you really like this or that programming language and you want to be better at it?
A side project is perfect to learn. If you enjoy learning (and if you are a developer you should) it will be a great day-to-day source of motivation.
However it can be tough to handle, especially if you have difficulty to build it. Keep in mind that it’s part of the game and what make side projects interesting: they challenge yourself.
Remember as well that failures are only good opportunities to learn.
Your side project is your new shiny greenfield where you can experiment and have fun. This is hugely important. Don’t restrain yourself too much, go crazy and do whatever you want.
If you don’t like to build your side project while building it, ask yourself: don’t you like the technology you use? What makes the building process that boring?
Try to find out what’s going wrong and fix it.
4. Find your specific audience
Now that you have clear goals in mind and a real interest to build step by step your side project, you might be interested to know if people are as enthusiastic as you are.
Ask yourself this essential question: for whom are you building your side project? It can be a group of people, one person or even yourself.
Develop your side project isolated in your bubble without talking about it and you may build something nobody wants to use. This is never a pleasing feeling.
First, try to find the community you’re targeting. It can be on reddit, on forum or even going to event crowded by the people you want to reach.
Then simply ask. If you don’t want to speak directly about your idea you can be pretty vague. Something like:
“Hello everybody! I was thinking: what do you think about a new website to learn foreign languages? I wonder if somebody would be interested to be able to create his own word list and do exercises based on them”.
More feedbacks you can have, better it is.
Since we have all tendency to value negative feedbacks much more than positive ones, try to stay realistic and objective. A positive feedback with strong arguments is better than a negative feedback without explanation.
Don’t forget as well that people have tendencies to mainly give negative feedbacks. Positive things are “normal” and therefore not worse talking about. It doesn’t mean that everything is bad about your side project. It means that you have to ask directly what they like about it.
Try to distance yourself from these feedbacks and retain the one who are well explained. Feedbacks are only useful for you to improve, otherwise they are useless.
You can basically ask for them at any stage of your project. Ask some friend developers about the quality of your code. Ask designers about your design. Ask the people your target if the beta product is good.
You need to be sure you are going in the right direction. If you can be sure of it at every step, it’s even better.
Finally try to remember: failures are just feedbacks. Again, they are an opportunity to learn and therefore hugely useful.
I know that feedbacks can be difficult to accept and can even be hurtful. They are however essentials. More you will seek them, less hurtful they will be.
5. Find a place in your priorities to your side project
If you work already in a company as a developer, a side project can be difficult to build on your free time. You may often feel tired to pursue your goals. Fatigue and motivation are mutually exclusive.
It’s really important to find how to balance your personal life, your work and your side project.
Try to explain to your family, your friends or any relatives you live with that you need some time for your super duper side project. Explain them your goals and your motivations.
Explaining is the key word here: if you impose to your family 6 hours non stop of deep focus it might be way too much. Remember: working on it 30 minutes everyday is better than 10 hours once in a month.
If you work a little amount of time on it on a regular basis, it might be easier for them to accept it. If you have clear goals they will understand your motivations.
In order to work consistently it’s better if you can allocate some time to your side project without being disturbed.
Again, communication and listening skills are key here.
Another life balance advise: try to sleep enough, eat correctly and be sure you rest enough between your job, your side project and your obligations in general. Your body and your mind need to be treated with respect.
Always try to keep in mind that a burn out won’t help you in anything and would be way worse than abandoning a side project.
6. Smaller side projects are better
Your dream is to build by yourself an application to send rockets on the moon? That’s a find dream but let’s be realistic. A big and complex side project has more chance to never see the light than a simpler one.
It makes sens: more you will spend time to build your side project, more your motivation will go down. At one point you will just let it die altogether.
It’s especially true if you use a technology you don’t know yet. Don’t put on your shoulder too many additional difficulties, learning a new programming language or a new framework is difficult enough.
The sens of gratification is hugely important to keep yourself motivated. Gratification comes by achieving things. Achieving a whole project will content you the most of course but even achieving part of it will keep your motivation high.
Split your side project in multiple little parts. Each time you achieve one of these “side project chunk”, you will trigger this sense of gratification. It is a big help to move forward in your project.
Splitting your project in parts will ensure you as well to stay on the good path which leads to your final product. These parts need to stay coherent with your goals.
If your side project is a big one and you want to achieve it, it might be time to find some buddy to help you realizing it. Use your network and ask developers or designers if they are ready to share your goals.
It might bring as well a new array of opportunities… and difficulties.
7. A good organization goes a long way
A good organization will be a huge help to manage efficiently both the scope and the timeline of your side project.
A lot of tools can help you track the time you want to spend on each task, the time you really spent to do them, what tasks you still need to do in a near future. e I will go back to this part in more details in the second part of this series of article. There I will explain in details my organization.
8. Building habits around your side project
Working consistently is one of the key for a successful side project.
What do I mean by consistency? Working a bit every day is better than burning yourself working non stop for three days. Especially if you work non stop for three days every three months.
You need to find a balance. How? By building good habits. They can help you tremendously.
I would lie to you if I say that building habits is easy. It’s not. However when you have your habits in place your productivity will change drastically. I can guarantee it.
Your life is already full of habits. If you drink coffee every morning, it’s a habit. If you brush your teeth every morning, another habit.
The key is to build this kind of strong habits with your side project in mind. It can be working on it every day for 10 minutes at 5pm for example.
If you think you lack willpower to build these habits, you are wrong. Everybody has more or less the same strength and weaknesses concerning willpower. Willpower is not something you have or you don’t. It’s a complex set of mechanisms you simply need to understand.
When your habits are in place for a long time, you will work on your side project without even thinking about it. You remember the last time you had to push yourself to do whatever you needed to do? You remember how much energy you spent only to convince yourself to begin the task at hand?
This energy is precious and you need to save it. Building habits will allow you to only focus on the task itself without spending energy wondering if you will do it.
9. Avoid any pressure: a side project should be fun!
You have enough pressure in your life: don’t put pressure on your side project. It’s something you need to enjoy or you will abandon it.
First, avoid fixed and precise deadlines altogether. Are you able to accurately estimate the amount of work you need to do anyway? I don’t know anybody who is able to do that.
You can estimate roughly each little tasks constituting your side project but don’t take it too seriously. If the task take 10 times your estimation, just accept it.
Deadlines can stop you from experimenting. Having room to try new things can teach you a lot.
You can learn a lot from side projects and I believe this is why we want to do them at the first place. However deadlines will push you to bad habits, crappy code and ultimately burn out.
10. Perfectionism: quality or default?
I’m a perfectionist by nature: at the beginning of my career I could spend hours looking at my code, modifying it to make it beautiful, perfect, bug free. The problem? Writing more than 10 lines of code would take a crazy amount of tine!
Always keep in mind that you can always improve your code later.
Here’s my strategy:
- Make it works
- Test your functionality
- Refactor it if it looks too ugly
- Time to begin another feature
We don’t write our code in marble. You can modify it at any time. Trying to always go forward will keep your motivation flowing, your ideas popping.
Don’t get me wrong: refactoring is hugely important. You need to do it from time to time or your side project will be a mess. Simply put priorities on what need to be refactored.
Allow you dedicated time in the week to refactor, or simply refactor when you feel like it. It’s your side project, you’re call.
A last word about performance optimizations: do it only if it serves your needs, not only for the sack of it. You can spend hours fine tuning everything for no perceptible gain.
But… how do I do all of that?
This article may seem very theoretical but it’s the foundation for the next article which will be much more concrete.
Without this foundation I am afraid you will have more difficulty to achieve your side projects. You need to understand and integrate these concepts to apply them.
Obviously these tips are still valid regarding your goals and your side project. As everything in the development world: apply rules and principles depending on what you want to achieve. Bend them if necessary. Don’t follow them blindly without using the most important organ you have: your brain.
A last advise: no side project is useless since you will always learn from them. Even if you never finish them. Even if they are total failures. Especially if they are total failures.
Keep trying, failing and learning. This is they way of success.