Skip to main content

Command Palette

Search for a command to run...

Getting It to Work Is the Easy Part

Updated
•2 min read•View as Markdown
F
Building software, exploring systems, and documenting what I learn along the way.

There's a point in building a project where everything technically works, but I'm still not entirely happy with it.

The feature does what it's supposed to do. The API returns the expected response, the data gets stored, and the frontend displays it. I could move on to the next thing, but something about the implementation still feels off.

Usually, that's where I end up spending more time than I expected.

I've been thinking about this a lot while working on projects involving AI systems. Getting a model to produce a useful response is one thing. Figuring out how that response fits into the rest of the application is another. Where does the context come from? What happens when the retrieved information is wrong? Which part should own a particular responsibility? What happens when one component fails?

These questions don't always show up in the first working version. They appear when I start looking beyond the happy path.

I've also started paying more attention to how much complexity a feature actually needs. It's easy to add another abstraction, introduce another dependency, or build a more elaborate solution because it seems like the right thing to do. But every additional piece has to justify its existence. Sometimes the simpler implementation is the better one, even if it's less exciting to build.

The annoying part is that there's rarely a single moment when I suddenly understand the whole system. It's usually a collection of small discoveries: tracing a value through a few functions, reading an unfamiliar part of the codebase, finding an assumption I didn't realise I'd made, or realising that the bug isn't where I thought it was.

That's the part of building software I keep coming back to. Not just making something work, but understanding why it works, where it might break, and whether there's a better way to put it together.

A working feature is a good checkpoint. It isn't necessarily the finish line.