This post was featured on CSS Tricks with more commentary and I also discussed side projects on the Modern Web Podcast!
I read a list of Things You're Allowed To Do on Hacker News recently. These are useful reminders for a well paid, technical audience, but one thing stuck out to me: It didn't mention making your own tools. Not even once.
Even the greatest software has parts that aren't so great for you. But the difference between you and everyone else is that you can code.
Here's a list of tools (that you don't need anyone's permission) to code for yourself:
- You can make your own Stylesheet: Long before GitHub got Dark Mode, developers had been making their own with the Stylus Userstyles Manager.
- You can make your own Query Generator: Most platforms have advanced features that are poorly documented and don't have good UIs. You can make your own. I made my own Advanced Twitter Search UI embedding all the little tips and tricks that people pass around by word of mouth. I know of two ongoing attempts to do the same for Google's advanced operators.
- You can make an Inspo Generator: Projects like What to Tweet, Components.ai and Doodle Strudel get ridiculously popular compared to their technical complexity - because inspiration loves combinatorial explosions!
- You can make your own scripts: Like this guy. Developers have apparently been automating coffee machines for so long that I recently learned that the infamous HTTP Error 418 was inspired by an actual real life situation.
- You can make your own CLIs: CLIs are essentially interactive scripts. If you do JavaScript, I made a course on Egghead about building custom CLIs with oclif and TypeScript!
-
You can make personal proxies: Frustrated with slow searches (I am often on mobile 3G), gamed search results, and assorted crap in my URLs, I recently made my own Google Search proxy. A proxy is different from "just the UI", because it involves setting up a server or serverless function to process data for you. Because you have total control of server data, you have the ability to postprocess, combine, persist, and optimize it for your specific preferences. Scraping public data is probably legal, but personal means personal - Be careful about sharing it with others and definitely do not sell it. But this is ethically no different than setting up your own Pi-hole.
My personal cheatsheet of automation resources is available here.
These ideas are great, scoped projects that let you try out new languages and frameworks and improve your quality of life as a side effect. Always wanted to try Svelte? Make a query generator! Want a new CLI? Deno ships binaries now! Supabase claims to be an Open Source Firebase Alternative? Put it to the test!
And there's a compounding effect to these as you make them. More often than not, the lessons you learn from making a tool for yourself will find their way into your work. If you get really lucky - your side projects might even become your life's work.
Don't take it from me. Here's Dan Abramov:
Here’s a thing that I learned at FB that I wish I knew much earlier. Invest in building custom tools!
You might think only bigcos make custom tools. But a tool doesn’t have to be sophisticated. It can be a script you could write in a day. And at small and medium companies, even a little effort can yield a huge return. Because nobody optimized anything yet.
The beauty of specializing in moving bits instead of atoms is that we can iterate in minutes, rather than months. That's a skill that customers pay us handsomely for, and we should remember that we can simply be our own customers too.
Author's Note: I wrote a longer treatment of the benefits of, and ideas for, Side Projects in The Coding Career Handbook. I also commented in the KeyCuts podcast on how all young finance traders make their own pricing tools as a rite of passage — like how Jedi make their own lightsabers before becoming Jedi Knights.
If you are making a DevTools startup, I am incubating a small community in DX Circle, my proto-blog for investing in Developer Tools and Developer Communities.