Why every developer should have a side project: My 10-year journey of failings

3 hours ago 2

Game screenshot 2 In this article, I share my personal journey with side projects: my failures and successes for the past 10 years. I talk about how working on side projects pushed me to learn new skills and has helped me grow beyond coding, as well as showcase my many attempts to build a business. You will learn how to find ideas, approach development and manage time, deal with burnout, and learn from my mistakes.

In the end of the article, I also showcase my latest side project Betterlingo App and talk why I decided to build another project after a big break. I hope my experiences and advice will help you on your own path.

Everything that you do outside your day-job!

Contribute to Github projects or create your own. Here is a list of my most popular GitHub projects:

Reading source code was my hobby and passion - several years ago I decided to learn React source code. It took quite some time, but as a result I published the open-source book “Under the hood ReactJs” which explains entire codebase with flowcharts. First thing I realised after that I need some tool to generate flow chart images from JavaScript code. So a year later I built an open-source tool for that called “js2flowchart” which automatically generates flowcharts from JavaScript code. Later, I discovered I still need something broader to cover entire codebase, something that can help marking important places in code, connections between files, etc. That's why I built “codecrumbs” (name is derived from “code” and “breadcrumb”).

Package solutions for users, free or paid. Some of my products (and I will talk about them in details later in the article)

Or, content also can be your side project. Write tech articles, record youtube videos, do conference talks, tweet, etc. Few examples:

  • min become a better coder expert
  • max build a business and get freedom (it’s OK to dream :)

At minimum, you become a better expert. And I explicitly say not a "coder", but expert, because when you do side project, you learn so much more than just coding. And on the other end, you can build a business from your product and get the freedom (and then you wake up :) And, of course you can have a side project just for fun, like a hobby.

  • Day job limits your responsibilities (e.g. only FrontEnd)
  • You don't see the full lifecycle of a product
  • Your product/business exposure limited to just “coding”

There is vast world beyond the code!

Your job limits your responsibilities (and thus expertise) because you almost always do one kind of work, for example, only front-end or back-end or design etc. Then you also don't see full life cycle of a product. So for example, you can grow to Senior developer, but you always join in the middle of a project development, so you never see the "set up" phase of the project and so on. Or you, for example, never see a real project in production, because you always join during active development phase - thus you never face all the production issues. And then, all your expertise pretty much limited to coding, so you don't do anything related to product and business side of things.

With side projects you can:

  • Learn other areas (UX, BE)
  • Broaden your skill set beyond coding (business, marketing, support)
  • Build muscle of finishing projects

So you:

  • Become more valuable professionally
  • Build your portfolio and personal brand
  • Get prepared for senior/managerial/product roles
  • Extra income stream (yes, it’s OK to dream)

We love to work with founders - Linkedin

All this makes you more attractive professionally. For example, often when recruiters, or usually it's CTOs/Founders contact me on LinkedIn they say "We love to work with founders”. Because founders understand what business needs so much more than "just a coder", they can see the big picture and so on.

True story time: Under the hood React and Facebook

  1. Built “Under the hood React” project
  2. Got noticed by Facebook
  3. Got interviewed by Facebook
  4. Failed interview :(
  5. Still grinding on side projects

This story about one of my popular GitHub projects, Under the Hood React. It's a big research project about how React works under the hood. With visualizations, flowcharts, etc. pretty much everything you need to know about React internals.

The project went viral, you can say, got ⭐6.6k So I got noticed by Facebook. I got interviewed by Facebook. And I failed that interview :)

What we learned? That algorithms on interview is a bitch.

But also - side project might bring you benefits you never expected or hoped for.

  1. Question tools you use (see what can be improved)
  2. Scratch your own itch (build tools to solve your own problems)
  3. Externalize your expertise (package your skills into tools for other to use)
  • It’s easy to build something you are passionate about
  • It’s OK to copy and improve existing ideas

Don’t look for unique ideas — that’s a trap

How do you I ideas? Well, in that example for Under the hood ReactJS - I never started it with "Oh, I need some idea - then I will implement it". I doesn't work that way. I was (cheesy word alert) "curious" how React works. And then I thought: I'm doing it anyway, so I will nicely document it and share it as well.

Another example for scratch your own itch - I have a keto-diet app. When I started doing keto diet, all apps seemed very complicated to mee. I didn't plan to build my own app but I simply couldn't use what's out there. So I did. It's released, published and everything. But only I use it and I disabled registration - so no one can use it and no one can bother me about bugs etc, I built it only for myself.

And lastly - externalize your expertise. Meaning - taking the knowledge and skills you have and turning them into something others can use — like tools, products, courses, or content - so you "don't have to be there" to do it hands-on.

It's easy to build something you're passionate about. Or, in fact, more important point - it's hard to build something that you are not interested in and just do it to have a product or for money etc. It's hard enough as is, don't start the a project you don't believe in.

  1. Built Codecrumbs.io (happy, no competitors)
  2. Codesee was founded (competitor, millions $ in funds)
  3. Codesee shuts down (after 3 years)
  4. No product market fit (was acquired later)

Unique idea - guaranteed success, right?

CC app ui

Another true story time. I had what I thought an unique, brilliant idea. App was called Codecrumbs - the idea is that you can visualize code base, so it's super easy to onboard new people. If project is big and complex, you have extra abstraction with this visualization for your codebase. It stays in sync with code and does other complex stuff - I spent years working on it.

I was very happy because it didn't have any competitors. And naively I thought: I am so smart. No one thought about this idea before. Well, a few years later after that, "Codesee" project appeared. It was very simmilar to Codecrumbs. But they got funds and they got full-time team working on it. So few years later their project got so much better than mine. Well, me working alone and on weekends only - I could compete. Anyway, several years layer, I got notification that Codesee shuts down, because they "couldn't find product market fit". They validated the idea and it wasn't good.

TL;DR: ask users about their problems - don’t start with your solution to imaginary problem.

My mom says I am brilliant, but do real users care?

To learn more - checkout the book "The Mom Test" by Rob Fitzpatrick. How to talk to customers & learn if your business is a good idea when everyone is lying to you.

Vitamins = nice to have / Painkillers = must have

Projects can be "vitamins" or "painkillers". Meaning - some of the projects can be nice to have and some of them are must have. "Vitamin" project is for example Headspace - meditation app, and you for sure can live without it. When you think about building a project that is "vitamin" - be prepared that it will be much more harder to get anyone to pay for it and market is much more competitive as well.

But then on the other hand, "painkiller" is something like Stripe - it saves you time and money to get online payments working - it kills real pain and people pay for it.

Painkillers are often B2B

So how big your sideproject project should be? See "The Stair Step Method of Bootstrapping" by Rob Walling below. The Stair Step Method

Rob is pretty famous in bootstrap-startups world and has published many books on this topic. So the idea is to start as small as possible to "learn the ropes" and then re-apply those skills on bigger, more complex projects.

Start small and remember - fininshing writing code for your side project is not the end, it is just a beginning of making it real product.

  1. Create landing page with waiting mail list (can even ask for money upfront)
  2. Promote landing page without building product just yet
  3. Validate interest - abandon or build the product as result

It might be a good idea to sell first and build later. Why, you ask? So you don't have to build a product that no one is interested in. So you validate as cheap as possible and as fast as possible.

You may get stuck in the weeds of building the product for years, burn out and then realize that no one even cares about your product.

  1. Don’t plan implementation - plan product launch
  2. Plan one key feature (“main idea”) - or you will never launch
  3. Launch after key feature works
  4. Talk to users, adjust and expand

The idea in your head is much more vague than you think.

So how do you plan how to work on your side project? When you start on a side project, usually you have some vague idea.

It’s good to have plan, but most of it is assumption, but when you start building and see it in real life - lots of things start to change, thus have sketch don’t over plan. But idea is - launch after having one key feature working, validate and expand with users. They say you shouldn’t work in silo for 12 months. Don’t keep adding features thinking it will make your project so cool that everyone will love it. OK product with good marketing will always beat perfect product no one knows about.

Dream without plan - lots of wasted money.

Game screenshot 1 Game screenshot 2 Game screenshot 3

Those images are from my dream game I tried to build. 10 years later, I still absolutely love this art and wondering "what could have been". Art for the game I never released... I thought I have this brilliant idea for gameplay, and it was (in my head). I thought if I build it, everyone will fall in love with it, and it's going to be like a "billion dollar" game because everyone will buy it for sure. At that moment, I had no idea what I was doing. But I had some saved money from my main work. So I hired designers, I hired scriptwriters. We had a proper team, even though for me, it still was a side project (I kept my main job). I was paying my team's salaries for about six months. After six months, I wasted all my money and couldn't pay them anymore. We built gameplay scenario and graphics for a couple of game levels. Game was a platformer, but with many quests and interesting animations and stuff. I still had to code everything, but then decided I won't use any existing game engine because they could not do everything I wanted, so instead, I thought I would code game engine myself also.

It was super stupid. Own game engine, sure :)

I did code game engine, although it was really crappy. I could make it to do what I needed, but everything else about it was complete shit. Should have gone with 3rd party engine for sure.

I was super burned out at that time already, because I had to manage all those people and I also needed to work on my main job. And do the coding part for the game. So I said: okay, team, let's stop for now and I fired all the people. Story for another day, but it was interesting experience to actually hire/fire people, never done that before.

So, now what? I thought I would do like IntiGoGo campaign. Or Kickstarter. I had enough material to showcase everything, put proper demo together. We will get some money from campaign and after that we can continue development. Well, I lived in Ukraine at the time and turned out (surprise-surprise) I couldn't start campaign from Ukraine. So one supposed to hire an agency in US and pay them, I think it was $5,000 at the time, and they do that on behalf of you. They create an account and everything, and they also get a percentage from campaign. Well, I didn't have any more money left, and I was also exhausted, simply didn't want to do it anymore. So that was that, lots of wasted money, lots of wasted time, and I nothing to show for it.

But the moral of the story: I could have learnt upfront about Kickstarter limitations, but I never even thought in that direction. I was in love with my idea and I thought idea is everything (well, I was very young at that time, now I learned).

Switching gears back to coding. So what stack to use for your side project? Depends on your goal: business or learning?

Tying to build business - go with what you know: it will be hard to learn new tech and build fast at the same time you will still learn a lot of auxiliary things. Want to learn? Use "Hello world" apps.

What is a starter? It's like a code base/or template that you can buy or get for free, and it has a lot of stuff already implemented. Starter

When you don’t want to waste time on admin work

Some examples of starters:

  • ship-fast by @marc_louvion
  • zerotoshipped by @thekitze
  • saasstarterkit etc.

You don't have to start from scratch. You can use a starter that bundles a lot of stuff already: database integration, users management, Stripe payments etc. Why? When you finish your key feature (your main idea) you may think you are 99 % done. Well, you still need to build all that admin features: user registration, payment, how you will send mails to users, how you will track what users do, etc. And believe me, it's almost the same amount of work as your key idea. But boring. So if you don't want to waste time it totally makes sense to use a starter.

But also use that approach for everything - can I not code this myself? And if you can, don't code it. Just pay for that 3rd party authentication provider. And there are providers/APIs for many things (with good free plans also)

You will be the person opening and approving your own PRs - write manageable code, so you don’t give up simply because it’s impossible to maintain.

code meme

How good your code should be? When you work by yourself - you don't do branches, you don't do pull requests, you just push to master every day. Yolo. No one reviews your code to fit some quality standard. You can write the best quality code but also can go full jQuery spaghetti mode.

Important to keep in mind that you will not know your side project codebase same way as the one from your day job. By definition. You don't work on your side project five days a week. You work weekends mostly. Every time you open your side project, you'll feel like you don't remember who wrote that code. So code quality should be at the level when you can jump in and out without spending hours to understand what you did last time.

Sacrifice as much as possible - chances are you never launch anyway

Perfect code is not the goal, the goal is to finish it and release it. There's also always possibility that you burn out, throw everything away, don't waste time on perfect code.

When you discovered something interesting:

  • write a blog post, tweet, record YouTube videos
  • talk about it on conferences
  • publish course or book based on learnings

Do once, sell ten times!

You should try to reuse everything you already spent your time on. Do once and sell 10 times. If you discover something interesting you can write a blog post about it or record YouTube videos, or you can talk about it in conferences. Pretty much all conference talks that I've done before were about the projects that I was working on at the time. You also can sell course of books. And many successful indie developers do that: they fail with many projects, but ironically, their courses "how to build projects" become really successful. Fun.

  • Be consistent (time flies)
  • Limited time should make you focused (only do work that “moves a needle”)
  • Plan during the week → build on weekends (you’ll look forward to weekends, it won’t feel like work)

Small steps taken beats big steps avoided!

How do you manage time? It's indeed very hard to find time for side projects, especially if you have a full-time job and family. So the most important I would say is - to be consistent. For example, you're going to be working two hours on the particular Saturday morning, and then that's all for that week. And then you have vacation, or get sick, or simply busy with life - and then one month is gone. And that's pretty much it, you had two hours of work.

So when you have free hour, it is important to do something, one small task, just for one hour. Do that consistently after several months you have built your project!

Only do work that "moves a needle" - meaning that actually makes your product better, moves your forward to release.

Be very strict with what type of tasks you actually do. When you don't have a manager or clear plan what you're doing, it's easy to get sidetracked, and you end up wasting month refactoring something or changing background color back and forth. Every time before starting work you have to ask yourself: what is the most critical thing I can build right now? So every time you sit to work on you project you complete one critical feature (in some minimal working way), so that actually makes your product more complete, more ready to be used.

For me, I plan tasks during the work week, and then when weekend comes - I already know what I have to do. So I just need to write the code down.

  • Organize productive time based on energy (*and family)
  • Plan rest as well as work
  • Prioritize sleep, breaks, movement
  • Pace yourself (it’s marathon, not a sprint)

Don’t sacrifice health for side hustle!

Eventually, everyone burns out. It's question of "when, not if". All we do is try to postpone it, or catch burn out signs on early stage to prevent complete crash. So you need to listen to your body a lot. Simply pushing all the time no matter what won't work. It's smarter to be more strategic about it. For example, I try to organize my time based on energy: I never spend first half of Saturday watching Netflix, because mornings are usually when I am the most productive, evenings - not so much, can be spent on family or Netflix. But at the same time, with several burnouts under my belt, I learned that I need to plan rest as well as work. I have to force myself to take breaks, to go for a walk, to skip a day when I am already redlining. Pace yourself, it’s marathon, not a sprint.

True story time: burnout and health issues

Health warning: you can overdo it like I did. Too much stress → burnout → developed chronic disease.

When you sick - nothing else matters.

Few years ago I was very exhausted and burned out, but, like all those times before I thought I can just push through it. Then I pushed, pushed and pushed some more. And then I got sick and developed autoimmune disease. And now I have to take pills for the rest of my life. And I can't take that back. So. Stupid. You know when they say: you can't have too much stress for too long, you really can't. And everyone is telling you that, your parents tell you that, but you think: I'm young, healthy and smart (or whatever), I can do it, won't happen to me. But you can't, it's a matter of time. And once you get sick - nothing else matters. You won't care about code anymore when you stay in bed all the time.

  • Famous indie hackers: @levelsio, @dvassallo, @marc_louvion
  • Resources: X, Indie Hackers, Product Hunt, Starter story, Small bets X profiles

But it's not all bad, of course. Need some inspiration? Just look at these famous indie hackers for example. The biggest is probably @levelsio. And he makes like around $300,000 per month on his side projects. And he is not the only one. Check out resources like IndieHackers or Twitter, Product Hunt, Starter Story or SmallBets to see what other people building and how they are building it.

It is popular notion nowadays that you're supposed to build 100 projects to succeed. Many tries until you get your luck. Or "throw shit on the wall and see what stick". IMO - it's all about how good you are with marketing and sales, no secret sauce here.

But what about AI?

Need to mention AI, to ride the hype wave: AI availability means that more people can build and release projects fast. Even people who couldn't code before. So idea of building small stupid projects is less viable today I believe. Because of AI - market is saturated with small stupid projects, users just ignore those as noise. So it's probably a better strategy today to put some effort into it, make something that stands out, that doesn't look like "AI did it in 5 prompts".

  • Don’t wait for brilliant idea - just start
  • Start small. Be consistent. Have fun
  • Extra work requires extra rest
  • You still can be OK dev without side project (building career at the company as side project)

Don't wait for brilliant idea, just start. And when you start, you actually get more ideas. It's counterintuitive, but just waiting for it won't do anything. Start small, be consistent, and have fun.

betterlingo.app Learn language with your favorite content from any website.

When I decided to take a break from side projects, I thought I can focus on my health and learn Swedish instead (I live in Sweden). While learning a new language, I started seeing lots of problems there. My brain immediately started thinking: how can I solve those better with some tool? So, yeah, here goes my Swedish learning - I am coding another side project again.

I decided to take a break from the side projects but somehow ended up building yet another one. I guess I just can't help myself.

I present you Betterlingo - Translate Subtitles & Text anywhere, all you need for learning a language, while enjoying content. So not like all those other apps that teach you random words and grammar, but rather an assistant that helps you build vocabulary while watching your favorite shows, reading articles, etc. Please check it out, I would love to hear your feedback.

Read Entire Article