I understand the core of your rant is "the lack of formalization prevents us from truly knowing what an optimized design is so we just guess." You would prefer society would work on developing better formal theories instead of ... what? Doing business, solving concrete problems, and building stuff?
I believe you can do a rigorous design/architecture in theory. In practice, we cannot handle the complexity and uncertainty. Usually at some point you have a human as part of your system to close some feedback loop and then you are discussing fuzzy topics like psychology.
You use programming languages as examples and claim that Rust is "closer to an optimum solution." Most of the other replies are about our inability to agree what that optimum should be. Rust certainly loses in terms of ecosystem maturity to C++, so it is further away from the optimum in that aspect and thus many people rationally decide not to use it.
I agree with you that design and architecture is a lot about intuition and gut feeling and should be more formal. However, we don't have to time to wait for the formal theory. Foods needs to put on the tables, so income needs to be generated, so business needs to be done, so decisions with incomplete information and lacking formal theory must be made by biased humans. Unfortunately, the complex and wicked problems are usually the more important ones. If you pick C++ instead of Rust, the organization will probably survive anyways. If you pick the wrong technology or person it can kill a company.
Psychology is fuzzy, but the study is quite actually formal in terms of empiricism. You may be thinking about psychotherapy? Not sure, and also not familiar with psychotherapy so take it with a grain of salt.
I'm not invalidating design and all things without rigor. I'm invalidating specific trends where we end up going in circles because of lack of rigor even though it doesn't need to be that way. Software design is one such area.
>I agree with you that design and architecture is a lot about intuition and gut feeling and should be more formal. However, we don't have to time to wait for the formal theory. Foods needs to put on the tables, so income needs to be generated, so business needs to be done, so decisions with incomplete information and lacking formal theory must be made by biased humans. Unfortunately, the complex and wicked problems are usually the more important ones. If you pick C++ instead of Rust, the organization will probably survive anyways. If you pick the wrong technology or person it can kill a company.
Sure agreed, I never said otherwise. I'm more remarking about the evolution of the industry. How much of this decade was an improvement over the previous decade? How much of it was a repetition of the same historical mistakes made again and again? I am proposing that formalism should be used to break out of the loop. I am not proposing that you use formalism to do your job. At least not yet. Think of it as where should the Boss put his funds for R&D? Formalism is it.
I believe you can do a rigorous design/architecture in theory. In practice, we cannot handle the complexity and uncertainty. Usually at some point you have a human as part of your system to close some feedback loop and then you are discussing fuzzy topics like psychology.
You use programming languages as examples and claim that Rust is "closer to an optimum solution." Most of the other replies are about our inability to agree what that optimum should be. Rust certainly loses in terms of ecosystem maturity to C++, so it is further away from the optimum in that aspect and thus many people rationally decide not to use it.
I agree with you that design and architecture is a lot about intuition and gut feeling and should be more formal. However, we don't have to time to wait for the formal theory. Foods needs to put on the tables, so income needs to be generated, so business needs to be done, so decisions with incomplete information and lacking formal theory must be made by biased humans. Unfortunately, the complex and wicked problems are usually the more important ones. If you pick C++ instead of Rust, the organization will probably survive anyways. If you pick the wrong technology or person it can kill a company.