Don’t let perfectionism kill your side projects
I named the folder “clutter”. I never click on it. It’s too demoralizing. Project after project, created in excitement, then dragged into clutter to languish forever. It’s my side project graveyard, and for a long time all my side projects ended up there. I was paralyzed by perfectionism.
It’s funny because I started in what was essentially side projects. My first job out of college I was a writer who coded as a hobby. Back then I launched dozens of small fun projects. They led to my first “real” job as a web developer.
And side projects are still where a lot of my passion lies. Where I can try new things and experiment free from the constraints I have at work. I don’t have to sell a client on a new framework, I can just spin it up in my local development environment and be on my merry way. But I took some things home from work that I didn’t even know I was taking.
At work I want to write great code. It is written so my coworkers can easily collaborate on it, to build off of it in the future. I use best practices because they make my work resilient to the stresses of the real world. Part of me feels like this the way to code.
Unfortunately it’s often not much fun. So many a side project died as I refactored code to look good to fellow developers (who would never see it) or wrote tests. If something you are doing in your spare time isn’t fun, you’ll probably stop doing it. And I did. It was a long time since a side project had been on the web, beyond maybe a sad Github repo with only a README.MD.
And when I started freelancing I had to face the fact I just didn’t have a lot of code I could show people out in the world. So I decided to launch a side project, no matter what.
I picked the idea that was running around in my mind the most, even though it was a bit weird. I have naturally wavy hair, and for most of my life I’ve either fought against it, engaging in the time-consuming process of straightening it, or ignored it as best I could. Somehow I stumbled upon the curlyhair subreddit that informed me that I’d been caring for it wrong by brushing and washing it excessively. That a book called The Curly Girl Handbook would show me the right way and I would live in harmony with my hair forever with its commandments.
The problem is the method is kind of complicated. There are a bunch of chemicals with weird names you are supposed to avoid. I joined some “curly girl” Facebook groups and pretty much half the posts were asking for someone to see if a list of ingredients contained a forbidden one.
Someone built a website to do this, but it requires exact name matches. Guess what this was a job for? All the regular expressions I learned about doing Code Puzzles. And I could turn it into a Chatbot because I had experience building them for clients and thought it might be fun.
Luckily there are a lot of great tools out there now that make it easy to launch stuff quickly. Glitch.com allowed me to spin up a chatbot connected to the API in a few minutes without doing much server config. I learned a bit of Express.js, read some API docs for Facebook and Wit.ai.
Then I wrote one very messy JS function to process any lists of ingredients it gets sent. The whole thing was done within two days. I also designed a cute logo using my rudimentary Illustrator skills and wrote the script which are skills I don’t get to exercise as much as I like since I mainly do development. I named it Curlsbot.
It is…not great code, I shudder to show it to anyone, and most of it is in one file. It has zero tests and no linting. It also really only does that one thing. But it works! And people like it! And that’s rewarding.
I haven’t officially launched it so it only works if I’ve added people as testers. I recruited testers from the FB groups and have about 200 so far, with about 50 regular users. I love getting regular feedback from the users, as some of my work in the past couple of years is so siloed I never even talk to the people who build the products I make.
The crazy thing is having “bad code” out in the wild doesn’t feel as bad as I imagined. It certainly feels less bad than having it languish in my side projects graveyard.
However, don’t think I realized how much work a FB bot was to supervise. Or how it would dominate my notifications. If I missed your party or something it’s probably because 90% of my notifications are from this chatbot. I could turn them off but then I’d have to remember to check it. So I’m keeping it in testing mode for now.
Maybe Curlsbot becomes a sleeker more full-featured product in the future, maybe it doesn’t. Regardless it felt great to get something out the door that was coded for fun.