A poor quality codebese definitely imposes a fair number of drawbacks and impediments, no question. A couple weeks ago I went through some fairly hefty refactorings of the codebases I am working on now. The code went from ok (mostly big monolithic files) to very good (not excellent yet, but, we are a startup and have to move VERY fast here). I created rules to guide the process, enforce principles, policies, patterns, practices, etc. on the process, and things were well refactored. Code properly follows SoC & SRP now, and is a bit more loosely coupled, etc. That has indeed helped.
The problem is that a thinking model thinks, regardless, and those steps take extra preparation time (the agent has to create the prompt for the thinking steps each time..so you have extra, and often longer, āGeneratingā¦ā or I think now it says āPreparing next stepsā) which is on top of the thinking process itself. Even if the thinking isnāt all that long (sonnet usually has 5-8s thinking sessions, but it can have many of them throughout a single request; gpt has much longer thinking sessions front-loaded), each of them that occurs, takes more time, and the whole process just seems to generally lag.
When I use a non-thinking model, both the agent prep step, and then getting the result back from the llm, just happens. There isnāt any lag, the model just does its thing normally and responds. I donāt think I have a NEED for the thinking, but even on what I think are very mundane tasks, right now using gpt-5, the thinking sessions are often 10-15 seconds long each, sometimes longer than thatā¦which confuses me. I mean, Iām doing things like updating a specific endpoint of a specific controller with a specific requirement. Spending 20-30 seconds waiting for thinking to complete for such a mundane task, is very confusing and I warrant unnecessary. (I should actually flip to sonnet non-thinking for a bit here, and try a similar task and see how long it takesā¦I suspect it would be pretty much instantaneous.)
Anyway. I have a reasonably well architected and designed set of codebases right now. Its all loaded into Cursor from a single root folder Iām using as a workspace, where all my cursor rules and MCP config is. So everything can be cross-referenced across repositories. I make EXTENSIVE use of documentation (@Docs). I am careful with the context I attach, and usually will @reference in the prompt as appropriate. I usually have a pre-defined plan that Iām working with (I used to have .md files with multi-phasic plan descriptions, today Iām primarily using Linear stories that I planned out yesterday), so there is hardly a lack of information about exactly what I need done, how, dependencies, related code, etc.
Even the linear stories are created by me prompting the agent and it using the MCP to generate and manage the stories in Linear. So the detail level of the stories is plenty sufficient, since the agent has access to all the relevant context, cross-referenced across all the various projects involved, including references to any docs, etc.
I donāt think I have a problem with a poor quality codebase or anything like that. In fact, I think the problem is, I have already done all the thinkingā¦and I really just need the model to ACT.