"Scratch your own itch."
It's a phrase I first encountered in the book Rework by Jason Fried and David Heinemeier Hansson (a great book, btw!!). The idea is simple: solve the problems that you personally encounter. The logic behind this is powerful. When you solve your own problem, you understand its ins and outs completely. You know the exact nuances, the frustrations, and what a perfect solution would feel like. This intimate knowledge ensures you'll build something that genuinely fixes the problem at its core.
Imagine the alternative: you ask someone else to solve a problem for you. Now, you have to rely on constant external feedback. Even with great communication, the final product might miss a subtle detail that only someone struggling with the problem would truly understand.
This brings me to why I'm writing this. A few days ago, I conducted a Git/GitHub workshop. We covered the basics, but time ran out before I could get to the bigger questions I'm often asked—questions about how to find ideas, contribute to projects, and actually get them out into the world.
So here we are. This blog post is my attempt to cover the things I actually wanted to discuss, all of which circle back to that one core idea: scratching your own itch.
Step 1: Start Small by Contributing to Open Source
This part might feel a bit detached at first, but it's the perfect starting point. The easiest way to get into building things is by improving things that already exist.
So, how do you start contributing? The answer is to find a good open source project in your preferred tech stack and start using it regularly. For example, if I wanted to get into Android development, I'd go to platforms like Peerlist, Product Hunt, or browse Twitter's #buildinpublic
and Reddit's r/buildinpublic
. These places are filled with open source projects you can explore.
Why does this matter, though? Because once you start using a product, you'll naturally notice bugs or think of features that could improve it. You can then raise these as issues on GitHub, get assigned to them, and solve the bug or add the feature you want. You're scratching a small itch within a larger project.
Plus, if you're a beginner, you can search for issues labeled "good first issue". These are typically straightforward and can help you learn the essential workflow of making pull requests (PRs) and collaborating on a real project.
Also don't just freaking DON'T follow those didi bhaiya channels 😭 ... their students now bombarded node.js repo after express.js when will they ever learn 😭😭.
Step 2: Find Your Big Idea by Scratching Your Own Itch
Now for the main event: coming up with your own project ideas.
The answer is right there in the title of this blog... it's always "Scratch your own itch." Solve something that you personally struggle with. Find a point of friction in your own workflow and eliminate it. Friction is the single biggest driver of creation.
Personally, I created Monochromate because no other browser extension had all the features I wanted in a greyscale tool. Since it was my problem, I knew every corner of it. Surprisingly, I found out others wanted the exact same thing. They started suggesting cool features, and this small community helped make Monochromate the best greyscale extension in the marketplace (yes, I can say this with full confidence :>).
Let's forget about me for a while. We all know how Linux and Git came into existence, right? There are always brilliant devs like Linus Torvalds who eventually say, "Fine, I'll do it myself." As programmers, we often start a project not because we know it's easy, but because we think it will be easy, haha. But that's how it works. That's how developers come up with great ideas or improve upon others' projects, adding their own flair to make them better.
Step 3: Don't Just Build, Ship It!
This part is crucial, and it's where most people stop. You've built something cool... now what?
Truth be told, I haven't mastered the art of promotion yet, but I've learned a few things that work. The most important one is this: show what you're building, as you're building it. Post about your progress on X, Reddit, or whatever social media you use. This creates hype and builds an audience before you even launch.
Don't let your projects just sit in a GitHub repository. Launch them. Put them on Peerlist and Product Hunt. Track where your users are coming from and double down on those sources. Write blog posts about your journey and share them on Dev.to, Medium, Substack, and your own site. Build your project for yourself, but share it for everyone else who might need the same solution.
Sometimes it will work, sometimes it won't. Monochromate took off after a Hacker News post resonated with the right audience, and it jumped from 100-ish users to over 300 in just a few days. On the other hand, I've promoted my latest product, LeetJump, on several platforms without getting much traction yet. This doesn't mean one product is better than the other; it just means I probably haven't found the right audience for it yet.
If you need
- Week 1: Introduce Your Idea. Craft a one-liner and share it publicly.
- Week 2: Build a Toy Version. Create a basic demo and show your progress.
- Week 3: Launch and Get Interest. Make a launch video and aim for your first 10 users.
- Week 4: Iterate and Relaunch. Improve your project based on feedback and launch again.
- Week 5: Focus and Experiment. Pick the most common feedback to address, then launch on a completely new platform.
- Week 6: Tell Your Full Story. Create a final "demo day" video showing your journey and what's next.
It's a Cycle
And that's really all you need to build and ship. Start small, find your own problem, build the solution, and share it with the world.
Speaking of which, I’ve started working on a new project following this same philosophy. I’ll be posting updates over on my social media handles soon you can follow me there for the updates. If you’re building something too, feel free to follow along! :)
PS: you can follow my substack as well to get the email notification as soon as I release new blogs, please consider it subscribing as that would definitely increase my reach and help me https://lirena00.substack.com/