>There are branches of science whose theories are more often derived from data and observation than from axioms. Just because you may not be able to break something down into first principles, does not mean that the knowledge is useless.
Yes science is different from logic. Programming functions happens in a limited axiomatic world that simulates logic. This makes computer science a bright target for mathematical formalization. This is entirely different from science.
>It might be true that much of systems design is based on anecdotal evidence and intuition, but I don't think that's enough of a reason to ignore the field of design entirely.
I never said ignore the field. Often we have no choice. No one calculate the best work of art. Art is created by design.
>For example, the concept of abstraction in software design may be based primarily on the intuition that human beings are bad at holding too much complexity in their minds. But any software developer who has written more than one program will agree that abstraction is crucial to good design.
The concept of abstraction, good abstractions and bad abstractions can be separated from design and formalized into exact definitions. That is my argument.
The reasoning behind why a human would want to do that is irrelevant.
> This makes computer science a bright target for mathematical formalization. This is entirely different from science.
Yes, but until computer science is fully formalized we will still need design, and can benefit from science. If/when it is fully formalized and creating software becomes an automate-able optimization problem, we will no longer need system designers. Or software developers, for that matter.
> I never said ignore the field.
Not explicitly, perhaps, but it really does read like that is what you're implying. You said multiple times that anyone labelled as an architect or designer knows nothing and is peddling bullshit. If we can agree that design is amenable to scientific inquiry, then it would make sense that some designers do know things.
Re-reading your original post, I realize now that I chose the wrong quote to respond to. I do agree with you that anything labeled as "design" is necessarily constrained by a lack of knowledge. Any time there are multiple ways to solve the same problem and there is no a priori way to figure out which solution is the best, we are forced to design. My point is that this describes software development, which as noted above has not been fully formalized. Writing software is design, and therefore needs designers.
> Often we have no choice. No one calculate the best work of art. Art is created by design.
Are you implying that when it comes to software, we do have a choice?
> The concept of abstraction, good abstractions and bad abstractions can be separated from design and formalized into exact definitions. That is my argument.
This is where you lose me, I'm not sure I understand what you mean here. Abstraction is a design principle, and developers argue constantly about whether a given abstraction is good or necessary. The motivation behind abstraction as a principle hinges on how you define "too complex", and that sounds very subjective to me—the opposite of formal.
>This is where you lose me, I'm not sure I understand what you mean here. Abstraction is a design principle, and developers argue constantly about whether a given abstraction is good or necessary. The motivation behind abstraction as a principle hinges on how you define "too complex", and that sounds very subjective to me—the opposite of formal.
It's subjective because it still exists in the realm of design. Once we formalize these notions the definitions become more clear. The key is formalization of fuzzy words. The definition of complexity is subjective yet there is a shared definition that we all agree on hence we won't be able to communicate. The key is pinpoint the exact shared metric that causes us to consider one piece of code more complex than another piece of code. Not an easy task. Formalization is very much a deep dive into our internal and linguistic psychology.
Take for example "luck." The concept of luck was formalized into a whole mathematical field called probability. Again not an easy task but doable for even fuzzy concepts like luck.
>Not explicitly, perhaps, but it really does read like that is what you're implying. You said multiple times that anyone labelled as an architect or designer knows nothing and is peddling bullshit. If we can agree that design is amenable to scientific inquiry, then it would make sense that some designers do know things.
Maybe a better way to put it is like this: Many design principles are bullshit simply because we don't know whether two opposing design principles are better or worse. There's a lot of rules of thumb that happen to work but there's a lot of stuff that's pure conjecture and unproven and even stuff that doesn't actually work. For example OOP was previously the defacto way of programming, now it's a highly questioned as a methodology. It brings all the "experts" who promoted it as the one true way into question.
Additionally if you meet someone with the title "Architect" a better title for them is "Technical Manager" because that's what they actually are. The title "Architect" implies that they have specialized formal knowledge when they in fact are usually just managers with more experience. Really that's the only difference, any typical engineer, holding all other things equal has pretty much the exact same informal knowledge that an architect has, after all it's all informal anyway.
>Are you implying that when it comes to software, we do have a choice?
I'm saying what you already know. We do have a choice to move software in the direction of formalized methods for things labeled as "design" no such choice exists for art.
Dude whats up with that comment. Are you mocking me?
No. I'm talking about how a computer is basically a logic simulator. You don't need to use empirical methods to prove things in a logic simulator, you just use logic.
Yes science is different from logic. Programming functions happens in a limited axiomatic world that simulates logic. This makes computer science a bright target for mathematical formalization. This is entirely different from science.
>It might be true that much of systems design is based on anecdotal evidence and intuition, but I don't think that's enough of a reason to ignore the field of design entirely.
I never said ignore the field. Often we have no choice. No one calculate the best work of art. Art is created by design.
>For example, the concept of abstraction in software design may be based primarily on the intuition that human beings are bad at holding too much complexity in their minds. But any software developer who has written more than one program will agree that abstraction is crucial to good design.
The concept of abstraction, good abstractions and bad abstractions can be separated from design and formalized into exact definitions. That is my argument.
The reasoning behind why a human would want to do that is irrelevant.