Coding with a Sigh
So you got hired and you have to work with an existing codebase. It takes a while to understand it. You have people apologetically explaining why some weird things are the way they are. You know it's expected you need some time to get up to speed. You start on a small piece of the codebase. Then another one. You develop a mental model of what's going on, and perhaps an idea of what it should be like.
Now we have AIs that can create a lot of code for us very quickly. If you still think you can contribute as a human software developer, if you think that approaches like loose coupling and good representation matter for the long term success of a codebase, you are probably going to want to look at the code at some point.
And then you find yourself a beginner with the codebase, like the new hire. You know what it is supposed to do, but now how it works. There's no institutional knowledge, though you can ask AI about how things work. Less so why things are the way they are; the AI will quite possibly just give a plausible explanation.
You need to catch up with your human understanding in order to contribute. So you do what you can; you just start somewhere, reading the code, changing it (or asking the AI to change it) and slowly build it your comprehension. You develop a mental model of what's going on, and perhaps an idea of what it should be like.
But it feels so slow. It feels incredibly slow. If you ask the AI, it just pulls feature after feature out of its hat. But you have slowed down to a normal human rate. It may take days to discover what a better abstraction should look like, even with AI that makes refactoring very quick. It feels like all progress has ground to a halt.
But if you do believe that you can contribute as a human software developer, if you think that these interventions are valuable to the long term health of the codebase, this is what you need to do. You need to sit down, look at the code, sigh.
What you're doing is not vibe coding - you do look at the code and care about it. What you're also not doing is carefully create and review every step and try to maintain your human understanding throughout. This is somewhere in the middle. You sometimes let the code run ahead of your understanding. But it's big and complex enough that at times you take the time to carefully look at bits of it.
The bet is that in the end, you can produce high quality software faster this way than the other methods would let you do. But it does cause the occasional sigh, so I call this approach down the middle sigh coding.