I’ve been building tiny projects for as long as I’ve been programming, slowly populating my GitHub with repositories. Some I use to learn a new technology through project-based learning. Others are the result of a random idea I had in the shower or walking around campus. For the longest time, I would keep them stowed away in my GitHub, and most would never be seen by real human eyes (besides job interviews). I could come up with a million technical reasons why no one would want to use such a thing. It’s not scalable. A better alternative exists. It doesn’t provide any real value. The code is messy. Even if I did release them, the website would probably be littered with asterisks on why this isn’t my best work.
Accepting Imperfection
Then, I discovered hackathons. My first hackathon, a 7-day virtual event called HackThis, was largely unsuccessful. Hackathons went against every part of how I thought about building a project. Build a project in the span of a few days, present it to judges, and release for the world to see. We built each part of our project with care and precision, but only in our last day did we try to integrate them all. As you might expect, integration hell hit us like a brick. We had a few individual components of our system working well, but as an app, the project was barely usable.
While COVID raged on, I kept attending these virtual hackathons, discovering what it means to build and deploy a project in a limited timeframe. A few hackathons in, I finally won something—for a project that barely worked. How could this be? The backend and frontend were both messy and potentially littered with bugs. But that’s not a hackathon project is about. In fact, that’s not what most projects care about. A project should be released when it provides the first inkling of value to anyone. In startups, they call this the minimum viable product (MVP), but I believe MVPs can also refer to a minimum viable project. A few more hackathon successes only reinforced that notion.
Release It Anyways
I’ve made it a personal mission to release my new projects to the world, no matter how impractical or imperfect they seem. Releasing means more than making a public repo on GitHub. It means sharing the project with communities like Hacker News and Reddit. It means fleshing out the README with enough information to use the project. It means deploying the app for anyone to interact with. This last 5% of effort unlocks 100% of the gains of public attention, constructive feedback, and sheer satisfaction that comes when people start using your project.
A while back, I wrote about how one of my toy experiments went viral. The tech stack for that project was far from revolutionary, just a simple combination of HTML/CSS/JS with some Firebase as a database. The over 100 thousand attempts, feature on Vsauce, and kind words on Twitter gave me a level of satisfaction I never knew you could get from a project. Real people with real lives took time out of their day to use and appreciate my work. It’s a high that I’ve been chasing ever since.
More recently, I built a Spotlight Search-esque interface to GPT-3 that I found a personal need for. There’s no shortage of GPT interfaces out there, but this was me solving a problem for myself. I released it anyways to Hacker News and Reddit, and people suddenly starting using it too. In fact, they started reporting bugs and requesting features on something I had built. Was this how all big open source projects began?
If you’re questioning whether your project is worth of releasing to the public, please, just share it and let the world decide. I have found so many hidden gems simply perusing through people’s GitHub repositories, often with 0 stars and a barren README. It costs nothing to have your work shown to the public, but it could cost you everything if your potentially useful project sits idle in your portfolio, like many of mine have been.
In a way, this blog is part of this new mindset of releasing anyways. I don’t consider myself a writer by any means, yet I’m still writing this and publishing it to the world. In whatever way it’s received by the public, I’ll be proud that I tried. I’ll have learned a bit more about writing in the process, and if someone finds it useful—that’s just an added bonus.