Finishing projects is hard. Like really hard. Way harder than it seems and way harder than it should be.
It took me about a week to get this website to the point where it is now, where I can reasonably call it "finished", even though there is almost no complexity in it. It mostly either serves some static pages or renders templates and serves those. The server needs to keep track of exactly two (2) strings, and that's it for state.
Why is this the most complex project I have ever finished by myself? It seems like the only projects that get finished around here are the ones that take less than 2 weeks to complete.
Actually finishing this project is a Big Deal for me and to be honest I am proud of it. First of all. it isn't complete garbage like my last attempt, but most importantly, it feels finished. The fact that none of my projects seem to ever end is an endless cause of self-doubt and sometimes even anxiety for me.
It certainly lends credibility to the part in me that tells me I am a "garbage programmer" and a ".1x'er", especially when I see peers hacking together a website in PHP or JS in an afternoon and calling it a day.
I consider myself both a garbage programmer and a craftsman at the same time: I want to deliver perfect code over garbage code, and because I can only produce garbage (by my own standards), I never deliver anything.
This, of course, reinforces my beliefs that I am incapable and "just bad at programming", while in reality I know it's because I am doing it to myself. In a way my perfectionism is incredibly self-indulgent, almost like a guilty pleasure.
This is why it helps me a lot to work with someone, because they can be the one to say "This is good enough, let's move on". Finishing the project is actually achievable like that, because I have someone to force me to swallow some of my pride in favor of being productive.
Another big issue for me is focus. The issue being that I do not have the ability to control what to focus on. It comes in waves, accompanied by inspiration and motivation.
It makes it so I can spend literal years on a project without ever producing a single beta, let alone a release candidate, without getting bored. Being able to focus on a project and finish it before I lose the ability to work on it is extremely valuable to me, because it represents a completed unit of work completed within a bounded time frame, with no external motivation.
It gives me hope and motivates me to do other projects that I have neglected for the past few weeks.