I have an embarrassing confession to make: I have a hoarding problem. No, I don’t hold on to real-world objects, in fact I think Marie Kondo would be quite proud of my sparse wardrobe and minimalist home. My problem is that I have accumulated a pile of unfinished side-projects, each and every one a painful reminder of their unrealised potential. When I mention my strange addiction to colleagues, I see this awkward look in their eyes, not one of judgement, but one of sympathy, followed by an admission of guilt: “Yeah I also have a full hard-drive of unfinished projects”.
Well, a couple of days ago I decided it’s about time to tackle my shameful folder of unfinished projects, starting with the one that’s given me the most grief and anxiety: my personal website. I had been working on it for years, but always found excuses to delay releasing it to the world. This is a project that had dozens of design files and various implementations on my local drive, all started from scratch, using different tech stacks. I found my first attempt from years ago that used plain HTML, CSS and JS; another version using vanilla React; another using NextJS. Seeing all these half-baked attempts I got really disappointed with msyelf, looked at the clock, and realised I had another hour left in the day before the realities of adult obligations would come to collect their tithe.
So I thought to myself: can I create a reasonable MVP in an hour and deploy it? It was a silly challenge, but oddly enough, despite the strict time constraint, I managed to finally break the infinite loop of starting and scrapping my personal website project.
Don’t get me wrong, it’s not a masterpiece, and it won’t be winning any awwwards anytime soon. But it’s live, and that’s a whole lot more valuable than the countless partially-completed but much more ambitious versions on my drive that will never see the light of day. It doesn’t have all the time-consuming bells and whistles that I wanted, but yet it’s out there, a side-project that I’ve shipped, one less item to clutter my unfinished folder.
In the world of software engineering, one of the biggest pitfalls is moving your own goalposts before shipping an incremental release. There is always room for improvement, always a new and shiny technology to try to incorporate, always a bit of refactoring that would make your codebase neater. I find this especially difficult to resist when it comes to your own personal website. You want it to be a reflection of your development expertise, your design skills, your familiarity with the new frameworks or industry trends. However, if you’ve been noodling away at your project for ages but the result is never ‘good enough’ for the thing to go live, it’s time to admit to yourself that you may be suffering from a case of toxic perfectionism.
Breaking away from that bad habit is easier said than done. I was able to ship my long overdue personal website because I had a shift in mindset. I stopped thinking about it as a definitive representation of my current technical ability. It instead became a way for me to showcase growth, consistency, healthy compromise and the ability to solve complex problems by breaking them down into manageable bite-sized tasks.
If you’re still struggling to let go of the idea of the perfect personal website, I highly recommend that you read about digital gardening and building in public. These should dispel the dangerous thought that a project must be ‘fully complete’ to launch and that it can only be successful if it’s perfectly polished. Contrary to popular belief, people do want to know how the sausage is made. Actually, people love to see the early stages of a project: it’s more approachable and not as overwhelming as advanced projects, with the complexity that was built up over hundreds of hours. Big projects look like a black box to people who are just starting out. So start small and show people how you made something from nothing.