I'm like every other developer, I start a personal project, get really invested in it for a week or so - then I give up on it. Which isn't ideal.
The last couple months I've been trying to figure out a way to actually finish some of my old projects off. I used to follow the 200 crappy words a day rule - meaning write at least one line of code a day. This worked well in the beginning, but I began to exploit this where I'd convince myself that just updating the README.md would warrant as writing code which of course, it doesn't.
I do have some pretty READMEs though.
The one thing I've learned that keeps me motivated to do one of my side projects is leaving it in a state of doing. So when you're smashing the keyboard and get to a natural stopping point - you fix the bug, finish the feature, hack NASA - don't stop, keep on going.
The hardest part of doing anything, is starting. If you finish at a natural stopping point then you're going to have to find your next starting point, but if you finish at an unnatural stopping point then jumping back into that work is going to be much easier as you already know what needs to be done - you'll likely spend much of the following day thinking about that unimplemented feature and potential ways to improve it.
A good way I enforce this myself is to set a timer, I set the timer for an hour and when that hour is up I completely stop what I'm doing no matter how unfinished the feature is, no matter how close I am to fixing the bug. The fact that I'm so close to getting something done will give me extra motivation tomorrow to jump back into it with a fresh head full of ideas!
Thank you, if you like my rambling check out my personal blogging site at https://codeheir.com/
This blog is sponsored by Code Canvases
Make your room come alive with the coolest programming/coding canvases on the market. codecanvases.com is the number 1 seller for programming prints with 100% exclusively designed canvases. Get them now whilst they're 20% off!!