Only when you know for sure the problem can't be coming through from that component can you stop thinking about it and reduce the cognitive load.
Regarding some of the ‘layered architecture’ discussion from the OP, I’d argue that having many modules that are clearly defined is not as large a detriment to cognitive load when an LLM is interpreting it. This is dependent on two factors, each module being clearly defined enough that you can be confident the problem lies within the interactions between modules/components and not within them AND sharing proper/sufficient context with an LLM so that it is focused on the interactions between components so that it doesn’t try to force fit a solution into one of them or miss the problem space entirely.
The latter is a constant nagging issue but the former is completely doable (types and unit testing helps) but flies in the face of the mo’ files, mo’ problems issue that creates higher cognitive loads for humans.
I’ve done an extensive amount of LLM assisted coding and our heuristics need to change. Synthesis of a design still needs to be low cognitive load - e.g. how data flows between multiple modules - because you need to be able to verify the actual system or that the LLM suggestion matches the intended mental model. However, striving for simplicity inside a method/function matters way less. It’s relatively easy to verify that an LLM generated unit test is working as intended and the complexity of the code within the function doesn’t matter if its scope is sufficiently narrow.
IMO identifying the line between locations where “low cognitive load required” vs “low cognitive load is unnecessary” changes the game of software development and is not often discussed.
For me, optimism still provides a lot of value in my worldview. The beliefs that have changed the most for me in the last 25 years is the limits and boundaries of what tools can do for us.
Technology ‘fixing humanity’ (when that ‘fixing’ is based on your own personal value system) is certainly a fools errand. But that limitation shouldn’t get in the way of imagining a utopia which is worth having.
Sure, I miss my childhood feelings of the 90s. But I also never expected a techno utopia to be ‘easy’.
> Have 1516 cats for meow
instead of now
Right now the parser intentionally tags modules as classes, we made some assumptions in the generic parser code for other languages that don't quite align with ruby's notion of modules, but that'll be adjusted in the near future.
Both items above coalesce into a desire to 'rewind' back to the top of the process and try to get the context understood at the beginning, and have that clearly reflected to the user so that as you move through to details it gets easier to handle the nitty gritty without as much editing.
Right now the parser intentionally tags modules as classes, we made some assumptions in the generic parser code for other languages that don't quite align with ruby's notion of modules, but that'll be adjusted in the near future.
edit: ability without accountability is the catchier motto :)