DEV Community

Cover image for Why I Build CLI Tools with Zero External Dependencies
Jeremy Nobel
Jeremy Nobel

Posted on

Why I Build CLI Tools with Zero External Dependencies

For a long time I wasn't really programming. My university degree covered a lot of things — but actual building wasn't one of them. Professors mentioned AI, algorithms, low-level concepts. They'd describe what something did, roughly how it worked underneath. But nobody told you the truth: building it isn't just calling a couple of functions and moving on.
There was always something deeper below.

At some point I decided to stop waiting and start digging.
I want to be clear about something: this isn't about dismissing other languages or tools. If I'm working on a company project or something with deadlines and other people depending on it, I'll adapt. I'll use whatever makes sense. But when the project is mine — when nobody is waiting, when the only requirement is that I understand every single line — I build from scratch.

Everything. My own tokenizer. My own CLI parser. My own command executor. Not because libraries don't exist. They do, and some of them are excellent. But because there's a difference between using a tool and understanding what the tool is made of.

I do make one exception: the C++ STL. And honestly, if I followed my own logic all the way down I'd end up punching cards or writing assembly. There's a floor somewhere. The STL is mine.

The real reason I build this way has nothing to do with efficiency or philosophy. It's simpler than that.

Kron — my CLI tool for file inspection and manipulation — made me suffer. It kept me awake. I'd lie down and instead of sleeping I'd be running solutions in my head, thinking about architecture, about what I'd broken, about what I could do better. It gave me something that years of coursework never did: the feeling that I was actually building something.

It brought me back to programming.
Kron is just the beginning.

Do you build from scratch or prefer existing tools? What made you choose your approach?

Top comments (0)