* At least some of them. Don't get me wrong. It is a bad habit to abandon each one of your side projects, but if your project holds you back, or you're not excited anymore, maybe it's time to move on?
Why am I writing this? So, a couple of weeks back I saw a tweet saying something like "you need to finish all of your side projects to be a good developer", and most people were supporting this statement in replies. I just wanted to say one thing: The hell, you don't.
Yes, side projects are super important for your career as a developer. However, finishing them isn't. Most importantly, you don't need to stress too much after abandoning a side project. Let me explain why.
If you're no longer interested in a project, maybe you already got what you came for.
There may be many reasons apart from learning why we decide to start a new side project:
- Get yourself busy for a weekend — another rainy day as an opportunity for some programming practice?
- Desire to do something fun — maybe you want to do something easy and silly for a change from your daily work?
- Or the other way around — if your daily work is not demanding enough, you may want some quick challenge?
- You want to test out a new idea and see if it's something interesting?
There are people for whom commitment comes easy — builders who finish all of their projects. It may be a disputable thing to say but for most of us it's not that easy. Some people need a constant challenge, and when the challenging part is over, so is their motivation. Some are easily bored. And some people have hundreds of ideas per day, and are moving from one to another figuring out what works for them.
It's okay to move on if you already got what you wanted (or if you never wanted anything or your side project turned out to be just a bad idea).
We often pick up a side project to learn something new. Let's say you want to learn about auth in React applications. You need some sample app, right? So you may either go with a classic todo app or keep thinking about a perfect sample app to implement along with learning auth. Whatever you choose, the app part is not essential. You came here to learn about auth, and you know React pretty well already. You may have tons of todo apps implemented in React.
Anyway. So you start with the auth part and some super simple skeleton of an app, and you cover what you wanted to learn. Now, time to finish your application. Does it sound like tedious work? Maybe you don't need to do this. Did you learn what you wanted? Yes? You're free to move on! Use this knowledge to build an app that matters to you.
A real-life story now. This blog. I wanted to add reactions and comments. It went awesome! Look at this summary:
What I wanted?
- Add reactions and comments to my blog.
What I got?
- Released two libraries.
- Learned tons about CSS animations.
- Started writing a blogpost about CSS animations. (It's ready, but not published.)
- Created a nice (IMO) landing page.
- Learned more about Theme UI and using it with Gatsby.
- Contributed to Theme UI a couple of times.
- Learned more about Gatsby.
Well. I'm sorry you can't see reactions nor comments on this blog. Still, all these gains are great, aren't they?
Your side project journey may be a straight line from start to finish. But it may not. You may never get to the end! As much as I wish you all to cross the finish line for most of your side projects, getting lost along the way is not that bad either! I personally highly recommend it. 😬
Maybe you have another idea for a side project or even a product? But something tells you that you need to finish all those started projects first. No, you don't. Are you bored with the previous projects and the new idea sounds exciting? Go for it. It may be another abandoned project, but it may be a hit. It may end up having a significant impact on many people, or maybe one day, you can build a startup on it? Who knows. Work on what makes you excited and what you believe in.
(I found this thread on Stackexchange and the title is a great fit here: Can't work on real projects because I keep thinking about my side projects.)
A bit of a follow up on the previous point.
One meaningful project is worth more than ten todo apps or Trello clones. Side projects help you with programming practice, growing problem-solving skills and getting to know more concepts. If you solve tons of problems, read thousands of lines of code, you're becoming a more and more experienced developer. You can then distinguish between lousy code and good code. You can solve problems faster because you did it so many times already (let's be honest, tho, you're just becoming better at googling). You are comfortable with new languages and frameworks. You can use tools and read the docs (underestimated skill). All of this is what matters. Not that you have ten Trello clones written with ten different CSS-in-JS libraries.
I firmly believe that developers' job is not about writing code. It's about solving problems. And it's the sum of your skills that make you good at your job, not dozens of sample applications with the more or less same logic. Practice is not enough. Deliberate practice is.
The key [to expertise] is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes.
~ Peter Norvig, https://norvig.com/21-days.html
It may sound a bit sad but our days are limited and we should spend our free time in the best way we can. Finishing all of your side projects may not always be it.
- Praise what you already learned.
- Don't look at your abandoned side project as a failure, but notice all the things you accomplished along the way.
- Did you have fun? Or did you grow as a developer? If you got something out of it, then it's a victory!