I used to think building the tool was stealing time from the real work
I ran on a rule I never really examined: if it wasn't billable, it wasn't real work. Client work had a deadline and a name attached to it. Building a tool to make that work faster felt like something I'd get to later, once the client work was handled, and the client work was never handled, so the tools I actually needed stayed unbuilt. If a task was slow and manual, I did it slow and manual, because stopping to build something faster felt like hiding from the actual job.
I've come to think that belief was wrong, and wrong in a way that cost me more than I noticed at the time. This is the story of one place I changed my mind, specific rather than general. It's about the tooling I built to turn a design into working code, why I resisted building it, and what changed once I finally did.
the belief I operated on
In that model, a deliverable was the work. Code shipped for a client, a screen built and signed off, a project closed out. Anything that didn't produce one of those directly felt like time stolen from the people paying me. Building infrastructure, especially, felt like avoiding the real work while telling myself I was being responsible. I could always say I was setting things up right, and the day would still end with nothing to show a client, so I filed it under work I hadn't earned the right to do yet.
I told myself I'd get to it eventually, when there was slack in the schedule. There was never slack in the schedule. I kept doing the slow version of the same task, over and over, because doing the slow version at least looked like working.
what changed my mind
The clearest example is the tooling I built to turn a design into working code. The standard tools for that job hand you a screenshot of the design and have an AI reinterpret what it sees into code. In my experience, that sounds fine until you watch what actually happens. The AI is guessing at the design from a picture of it, and from what I've seen, guessing loses fidelity. What comes out usually needs fixing by hand, which is the opposite of what I wanted from something that was supposed to save time.
I built something different. Instead of working from a picture, it pulls the real components straight out of the design file itself, the actual pieces, not an image of them. Those real components get written into the codebase as building blocks a developer can assemble into finished screens, inside a process I built specifically for this kind of work, not a generic prompt I fire off and hope works. There's a verification step at the end that checks the built result against the design at both desktop and mobile sizes before anything ships.
Building that took real time up front, time that produced nothing a client could see right away. It also did not come together in one sitting. It took weeks, and it failed more than once before it actually worked. By the old rule, that time was stolen. Once it worked, though, it started paying for itself on every screen that came after it, and it kept paying. That's the moment I noticed the rule I'd been operating under was wrong. I had thought stopping to build it was time away from the real work. It turned out to be the fastest way to handle every version of that task after that one.
what I believe now
I've come to think the tool often is the real work, because it's the work that handles the next several tasks for you instead of just the one in front of you. A deliverable pays once. A tool pays every time you use it after that. Once I started counting it that way, "real work" stopped meaning the thing with a client's name attached and started meaning whatever paid off the most, again and again, whether or not it produced something I could show someone that same day.
That's a real shift for me, not a slogan I'm repeating. I used to measure a day by what I could point to and say I built that for someone. Now I also count the days where what I built was the thing that does the work for me from here forward.
how I hold it now
I don't think this cuts cleanly in one direction, and I want to be honest about that. I know I can hide in tool-building forever and never ship anything a client actually sees. I've caught myself getting pulled toward one more improvement on something that was already good enough. The discipline isn't a fixed rule that says always stop and build the tool. It's knowing which is true on a given day: is this a task I'll do once, in which case I should just do it, or is this a task I'll do again and again, in which case building the thing that does it is the actual job.
I don't have a clean rule for telling those two apart every time. I still get it wrong in both directions. Sometimes I build something I didn't need to. Other times I grind through a task by hand far longer than I should before it occurs to me that I should have stopped and built the tool instead. What I've kept from this is smaller than a system: when the instinct says just push through and do the task, I've learned to ask the question at least once before I follow it.
That instinct to just do the task is worth questioning, in my experience, because sometimes the move that pays off the most isn't finishing the task in front of you. It's stopping to build the thing that does it from now on.