Fresh Thoughts

View all →

Software engineering used to be a translation problem.

You had an idea, and you spent your day fighting syntax to express it. The "how" was the work: how to walk a tree, how to align a flexbox, how to handle an N+1 query.

Now, syntax is cheap. If you want a function, you get it. If you want a service, it’s there in seconds. But when you collapse the cost of one constraint, the bottleneck doesn't vanish—it just moves to the next hardest thing.

The new bottleneck is verification.

Reading code is fundamentally harder than writing it. When you type every character yourself, you build a mental map of every edge case and every "why." You aren't just writing code; you're building the history of the logic in your head.

When an AI generates it, you’re just a witness. You get a block of code that looks correct, passes the happy-path tests, and hides its flaws behind perfect indentation. You have the what, but you’ve lost the why.

Asking for a "CRUD endpoint" is easy. Proving it handles permissions, retries, and partial failures is the real work. The machine has no intent. It doesn't care if the system works; it just knows what the next token should probably be.

The keyboard was never the bottleneck. The bottleneck is our ability to hold a complex system in our heads—and know exactly when the generated lines are failing us.

Bytes & Drafts