Right now in tech there's this popular idea that you should ship early and ship often. They talk about a Minimum Viable Product (MVP), the absolute smallest thing you can finish to make that money. This makes a ton of sense if your goal is to make money. You're looking for market validation/traction and you can only get those things if you release something into the world. If you just work on your idea in isolation, you never get feedback. If you never get feedback, your chances of making something people care about becomes a crapshoot.
I see a lot of people trying to apply startup rules to their side projects. There are so many articles about finishing side projects. A lot of them focus on prioritizing, making sure you’re working on the Most Valuable Parts (sound familiar?), and releasing it into the world ASAP.
But the MVP of a side project isn’t the same as the MVP for a startup. Cutting features is a useful tool to getting things done in general, but are the goals of a side project the same as a startup?
I've scoured the web, and these are the three biggest reasons people work on side projects:
Picking up a specific skill you didn’t have before, like a new programming language or framework or methodology. A lot of times people don't get to grow in the exact manner they want to at their day job. Others are trying to get a job and want to learn with hands on projects.
Doing more programming in total (making you more experienced). This rhymes with learning, but is less about specific skills and just exposing yourself to more problems. Every time you get exposed to a new problem, you learn how to solve it. When you have seen a ton of problems, you become that person who just knows how to solve stuff as they come up. There are lots of qualities of an experienced dev, but having seen and solved a bunch of problems is a great starting point.
Sometimes programming is a fun thing to do! Not for everyone and not all the time, but there are people who just LOVE programming and want to do a lot of it!
There are other reasons, people do make projects hoping to make money from it. And a million other reasons. What's important is that you know what your goals are
Note: doing side projects are NOT mandatory for being a good developer. If you get home from work at the end of the day and you just want to be done, you are not a worse developer because of that.
Back to those three reasons: Learning, Experience, Fun.
It might go into 'Learning'. You might have a specific goal to learn how to publish stuff for people to use. That's an important part of developing.
It might go into 'Experience'. Just the act of trying to deploy is going to encounter problems, and you'll gain experience in doing that particular thing.
It might fit into 'Fun', if you get a kick out of people using or giving feedback to the thing you made. For me, this is it. I live for feedback and I lose motivation without it.
But what if releasing kills your motivation? Software that is refined and tested and tweaked enough that a regular person can use it take a lot of work and a lot of time. I've heard from a lot of people that get scared off by this idea. If the only way to have a successful side project is to build a polished product, and you don't know how to do that or you just don't want to, why bother? Why start something if you're not willing to finish it?
Focus in on your goals. Construct a side project that makes you learn what you want to learn. Get that experience that you want. Have fun! If your goals are to build a nice polished product, do that. If your goal is to learn how to use a specific language/framework, build a strange useless thing that uses every feature in that framework so you understand it!
If you set those objectives and then hit them, that makes the project a success. So many devs talk about having a 'side project graveyard', because those projects never made it all the way to product. A lot of these feelings come from not having any closure to a project. At some point you just stop working on it.
If you want that feeling of closure, write a retrospective! Taking a little bit of time and writing down what you set out to do, how it evolved, and what you learned will tell your brain that the project is done. and you can focus on your next goal.
In conclusion, maybe the real side project is the friends we made along the way.
What are you working on right now? What goals have you set for your current project? Let me know!