Remix.run Logo
HarHarVeryFunny an hour ago

> In my mind design and theory are inseparable

In the sense that you seem to be using "theory" I'd somewhat agree, else all you really have is an artifact, not a intentional design. You could say the design is what-it-is, while the theory is why-it is, and both are certainly useful to document.

Where I'd tend to disagree, is whether the processs of programming is well described as "theory building" in this sense. The process is not the same as the destination, and the rationale for the destination is not always going to honestly reflect the process of getting there. I would also say that the process is not really about building/evolving these design-specific theories, although others may disagree.

For me, what drives the programming/design process is more the things I mentioned - at least as much general principles of software design, decomposition, factorization, orthogonalization, decoupling, minimal interfaces, etc, as it is about problem-specific design and theory. One does of course also have an evolving mental model of the parts of the problem and how they inter-relate (how one might break the problem down into modules and classes, etc), but I think that when things "click" and you go "Aha! I like this!", it's often more about generic design principles, and familiar design patterns, than it is about some problem-specific "theory" that you are evolving.

It's very hard, if not impossible, to describe the exact mental process of software design. I seems it has to be, like all reasoning and learnt-skill based behavior, a process of of subconscious pattern matching and doing what worked before. Biological RL if you like. I think it's possible to understand some of the patterns involved, such as these generic software design principles, but it'd be post-hoc rationalization to claim that some specific design rationale had been driving the whole process.

It seems it's the same for experts in any domain, e.g. chess - they can probably not tell you exactly why they selected a particular move, or why they intuitively ignored other potential lines, but can post-hoc provide endless theory and analysis of why it nonetheless made sense!