Build Something “Useless” — and Learn More Than You Expect
How building a “useless” side project can lead to deeper learning, lasting confidence, and real growth as a developer.
Today a colleague shared a fun-looking React design system in our team’s social channel: React95. At first glance, I thought it was just another playful side project — someone recreating the Windows 95 UI for fun. But after browsing its Storybook, I realized it was surprisingly complete. The component set is rich, keyboard navigation works beautifully, and the overall polish is impressive. It’s not just a joke — it’s actually usable.
And that got me thinking: who spent the time building this?
Imagine how many hours went into the details — handling edge cases, refining accessibility, supporting all those props, maintaining the site, the docs, the build system. From the outside, it might look like a "useless" project. But if you look closer, it’s probably one of the most valuable learning experiences the creator ever had.
It reminded me of something I did back in my second year of university. At the time, we were still using Turbo C as the main IDE for our C programming and object-oriented programming courses. Visual C++ 6 was already out and widely used — you could build GUIs with the Windows API quite easily. But I wanted to go deeper. So I tried to simulate the look and feel of a Windows 2000 desktop using only the raw Windows API.
I still remember the excitement of drawing my first 3D-style button. Using the rectangle and line-drawing APIs, I would render the top and left edges in a light gray, and the bottom and right edges in a dark shade — suddenly, the button looked like it was floating. I’m not sure I ever finished the “pressed” state, but the image of those first floating buttons is still vivid in my memory.
Later on, I went through a similar phase when I wrote a simple config file parser from scratch. Even though libraries like readline
already existed, I wanted to understand how everything worked — how tools locate the user’s HOME
folder, how config files are parsed line by line, how to handle malformed data, how Makefiles are structured, how toolchains work, and how debugging a handmade tool actually feels.
That feeling — where you're lying in bed, brushing your teeth, walking to lunch, even talking to someone — and your mind keeps drifting back to some little puzzle you're trying to solve… like how to track the mouse cursor on a canvas, or how to make the tray icons dynamic. That’s when learning really sticks.
So if you ever feel stuck or want to level up your skills, try building something that seems useless. Rebuild a thing that already exists. Simulate something you love (A command line tool, an simple text editor, a mini MVC framework, etc.). Even if no one else uses it, even if it doesn't go on your resume, the experience will teach you more than you expected. And most importantly, it’ll give you confidence — not because you’ve memorized an API, but because you’ve felt what it’s like to wrestle with a problem and solve it on your own.
That kind of learning stays with you — sometimes forever.