Hey everyone,
I sometimes get asked why I spend time building certain tools or scripts when similar things might already exist, or why I dive into the nitty-gritty of how something works instead of just using an off-the-shelf solution. It's a fair question, and recently I came across an article by Jan Endler called "Reinvent the Wheel" that perfectly encapsulates a lot of my own thinking on this. I'm not going to replicate his excellent post, but I wanted to share some thoughts along the same lines.
It's Not Always About Having the "Best" Tool First Try
For me, diving in and building something, even if it's a version of a "wheel" that's been invented before, is often about:
- Deep Learning & Understanding: The single best way I've found to truly understand a system, a library, or a concept is to try and build with it, or even replicate parts of it. When I was working on
hive-nectar
(my fork ofbeem
), delving into the transaction signing, the API calls, and the data structures wasn't just about getting a library working; it was about understanding Hive at a more fundamental level. Similarly, building tools likeauto-market
or the various Hive-Engine scripts forces me to understand how those systems actually operate, their quirks, their limitations, and their strengths. - Control and Customization: Sometimes, an existing tool is 90% of what you need, but that last 10% is crucial for your specific workflow or idea. Building it yourself, or heavily modifying something existing, gives you complete control to tailor it perfectly. You're not beholden to someone else's feature roadmap or design choices.
- Identifying Pain Points (and Solutions): When you build it, you feel the friction. You encounter the awkward APIs, the missing documentation, the performance bottlenecks. This firsthand experience is invaluable for then figuring out how to make it better, not just for yourself, but potentially for others too. My recent adventure with the Hive-Engine richlist pagination limit for Market Viewr is a perfect example – I hit a wall, figured out why, and then engineered a solution.
- The Joy of Creation (and Sharing): Let's be honest, sometimes it's just fun to build stuff! Taking an idea from a concept to a working piece of code is incredibly satisfying. And if that tool then helps someone else, that's even better. Sharing these projects, even the "simple" or "crude" ones, is part of that process.
- Avoiding Black Boxes: While using established libraries is often efficient, relying solely on black boxes without understanding how they work can leave you stuck when things go wrong or when you need to innovate. "Reinventing" a small piece can demystify the larger system.
It's Not About Ignoring Existing Work
This doesn't mean I think everyone should always build everything from scratch every time. That's not practical. But there's immense value in the process of building, even if the first version isn't perfect or if it replicates existing functionality. The learning gained, the control achieved, and the deeper understanding of the underlying systems often lead to better, more robust, and more innovative solutions in the long run.
Many of my Hive tools, from simple scripts to more complex applications, are born from this mindset. I wanted to understand something better, or I needed a tool that worked just so, and the best way to get there was to roll up my sleeves and build.
So, the next time you see me tinkering with something that looks like a solved problem, know that there's usually a method to my madness – it's all part of the journey of learning, building, and hopefully, contributing something useful back.
As always,
Michael Garcia a.k.a. TheCrazyGM