I look into one of the most ambitious personal programming projects I have ever worked on: A My Little Pony Game that I made in high school (it was a different time, okay?!)
Using idol data and some magick, we can generate some cool minimalist backgrounds on Linux.
I think most people can agree that the hardest part of a side project is actually finishing it. ...You do have a side project or two you're working on, right? Coming up with side projects is pretty easy, dangerously easy, even. And coding up a pretty big codebase? A breeze when you're still in that rush of excitement that comes with taking on a new side project. But getting your project to a finished state... now that is the hardest part.
I'm not the biggest fan of shipping, to be honest. And I think a lot of people aren't as well. I'm very picky over what I actually ship. The younger ones who typically get into this hobby tend to ship all willy-nilly. Ship ALL the things! But the older and more mature ones tend to only ship when absolutely necessary... and usually when it's only confirmed by higher sources or a lot of their colleagues. In general, the more cautious ones will only jump on a ship when it's reached OTP status. You know... One True Program? The "final" form of their side project, so to speak. I do this all the time. I only will think about shipping if it is in fact my OTP.
Here's the thing though: my side projects never reach OTP status. This blog was a side project and it is far from finished. It's just a simple blog, but I still feel like tinkering around in the code. Cleaning up the codebase until it is perfectly organized, adding little touches here and there, recoding the entire thing in another custom-made framework because it's becoming disorganized... Yeah, there's plenty of work I still need to do on this blog. But if I sit on it until it's perfect, I'll just find another flaw and push out the release even further. The majority of this blog's current working code was finished in 2015... but those small little perfectionist touch-ups I've wanted to make have caused me to push back release until... well, today.
If you're serious about a side project, if you want to actually release it at one point, you have to ship. Sure, your project may not be in an ideally finished state, but the important thing is that it's been put out there. From there you can continue to work and improve on it, and if people notice you'll have to. We tend to put off side projects because, well, they're just side projects. But putting one out there in the wild? Even if no one's really paying attention to it, just the fact that it's out there and someone can potentially come across it is enough motivation to keep on working on it. Putting your side projects out there forces you to actually maintain them.
And hey, suddenly that last 20% of your codebase seems much more manageable. So, don't be afraid to ship. Well... just don't go overboard on the whole shipping thing.