nathanjmcdougall

Your utility might be more important than your main project

In software development, I have a running joke with a friend that the project you care about is never as successful as the helper utilities you make along the way (which you usually don't care so much about).

Joking aside, this tendency is a real one. The reason is fairly straightforward: utilities serve a higher level of abstraction and so can add value across a greater variety of projects and domains.

While working on my Python dev tool usethis, I am needing round-trip I/O integrations with config files (YAML, TOML, INI, etc.). The lower-level libraries are a mixed bag. There's quite a lot of room for improvement in the Python ecosystem in the round-tripping space. I'm planning on trying to delve into it a bit and see what I can do. And I can definitely foresee that it would be more generally useful than usethis itself.

I think the main takeaway is that it's good to pull out helper utilities into their own projects sooner rather than later. Sure, there is such a thing as "too soon"; there needs to be some level of stability, especially in the interfaces. But creating a hard separation is a service to others, and I find also helps give clearer thinking in various ways.