While this is definitely a problem developers face, many of the solutions in this article only apply to socks. HN, do you have any tips for completing personal projects when they stop being fun?
One of the mentioned approaches is "give up". For personal projects this is a totally valid approach. If you're doing it for fun and/or learning, finishing need not be a goal.
This is valid when your only goal is to learn a thing.
But I think it's really important to remember that finishing is itself a skill that is worth learning and if you don't finish things, you gain no practice at that skill. Writing the first 80% of a hundred programs may give you a lot of skill in different domains, but it won't give you the ability to finish a program in any of them and get it to a point that it can benefit other humans.
Sometimes this is true. I've started several side projects to learn a new programming language. So I created 2-3 projects with the different frameworks, never feeling guilty if I should give up or restart with a different approach.
But the 4th time, though, it just "clicked", and I'm launching a new project with a new programming language + framework soon, and I intend to monetize it on day 1.
If I have very few customers, it's a portfolio project. If I have a bit more, it'll break even and I can dedicate some time to it. If it grows even more, I'll try to make a business out of it.
I struggle with this all the time. The only thing that I have found to mitigate it is contemplating the public embarrassment of the resulting failure or lack of completion. This mental anxiety usually gets me moving. Not the best solution, but for now it's about all I have.
You may want to check out a guy named Robin Sharma. You can find a bunch of his videos on YouTube. No need to pay for anything. The videos contain pretty much all you need. I'm trying to work on incorporating his ideas into my routines. What he talks about really is all about mentality and what sets apart superachievers from everyone else.
EDIT - just realized your question was specifically aimed at personal projects. The second paragraph still applies, in that case, but you can ignore the first as there won't be any embarrassment from personal projects not being completed. Oh, that just reminded me...for the personal stuff you can use one of those sites that is designed to hold you accountable by bringing in family/friends to monitor your progress and you set a clear goal with a clear penalty if you fail to deliver, and they are there to see if you follow through or not. The website I am familiar with is https://www.stickk.com/ but I'm sure there are others.
I'm notorious for having many half-finished personal side projects sitting around; some software, others hardware.
If someone else talks about a similar topic (e.g. a related article gets onto Hacker News, or someone asks "when will it be ready?") then I'm much more motivated to actually finish it.
If I need to find a job, I often try to write up the documentation and post Show HN projects. Occasionally I'll do that anyway, but it's easier when I'm in "writing" mode anyway (if I'm writing cover letters and emails).
The best motivator is to have someone else to work on a project together. Seeing the EspUSB WiFi mouse & keyboard through to production is something I wish I could witness, but I just can't get past the paperwork alone.
My grandmother used to reward herself for completion. Basically, when you complete it, you buy yourself a treat or do something pleasant for yourself (get a cup of vine and bubble bath, whatever).
As somebody who has been in art school I think "putting it out there" in some way can do wonders.
E.g. plan to put it on your homepage or github. Or if it isn't suitable look to present it at some event, a local hackerspace or even to your friends or relatives.
By having a goal like that you are forcing yourself over the edge while at the same time making visible what you are doing all the time which both benefits you in the end.
While this can be scary, with the right audience it can be extremely gratifying to get recognition for what you're doing.
Edit: of course you really don't need to finish every project you start. Sometimes you learn so much during a project that you would actually so it differently if you were to start again.