9 ms·
>I too used to believe that knowledge was only real if it was formalized, and that intuition is fake and inferior. Now, while formalized knowledge is easier to
by Geminidog 6y ago
>I too used to believe that knowledge was only real if it was formalized, and that intuition is fake and inferior. Now, while formalized knowledge is easier to record and convey, I realize that it is intuition that does the vast majority of the work in most settings. The ability to convey and gradually formalize intuition is indeed a mark of intelligence, but it is not necessary, sufficient or even desirable to wait until all intuition is converted to formalism before acting.
I never said all knowledge is invalid if it's not formalized. Far from it. I gave an example of a human getting from point A to point B. Clearly we have no choice but to rely on informal solutions when devising a "design" for aspects of out lives that are not open to formal treatment.
Overall My point is two things:
1. Often people don't know the difference between intuitive knowledge and formalized knowledge and attribute way too much legitimacy to "systems design." People think of these guys as scientists when they're really just making stuff up.
2. Informal intuition can as a result devolve into a trap where we endlessly come up with new frameworks, new metaphors and new "designs" without improving anything because there's no formal way of verifying what is optimal. I am arguing that the author of this article and articles like this is just the latest iteration of an endless circle. He introduces nothing new and instead provides a new metaphor for us to ponder about. Literally read it. Did anything change did you actually learn anything new? Was anything actually improved? No. And this blog post is one out of multitudes of "system design" and "system architecture" blog posts that have led to no real insight on anything. It's not just the blog posts either. The post is representative of "systems design" in the entire industry... endless circles of going nowhere.
The best example of the above two points is monolith vs. microservices? Which is actually better? What are the actual tradeoffs here? Nobody really knows, hence the reason why the concepts have oscillated in popularity and the resulting non-answer people come up with is: "Depends on your use-case." And still you get "experts" who pretend to understand this stuff as if it's legitimate "theory."
Let me give you another example. I can make up one of these "theories" and metaphors on the fly while offering zero substance.
You know how the fact that current architectures at most companies involve one giant monolith that does most of the work with a bunch of microservices surrounding one big monolith? It's no longer a choice between either monolith or microservices... everything is a hybrid now with a monolith in the center and satellite microservices orbiting the monolith. I call it the "orbital architecture theorem" which is basically a principle that says that architectures have a tendency to develop centralized and distributed layouts simultaneously in nature. It's similar to the ways planets and corporate organizations work .... blah blah blah. Come on man... you see where I'm going here with this BS? The entire industry is acting this way. It's endless circles of metaphors, BS theorems and laws and architectures that prove or show nothing.
The industry is ripe for formality in this area as we've been going in circles for decades. We are dealing with computers here: virtual idealized worlds ripe for systematic formalism. We don't even need scientific experimentation... just raw mathematical logic as there's no need to put a computer in a wind tunnel to measure unexpected aerodynamic effects.
- hrkfmud50k 6y agoI cannot agree more. There is way too much B.S. in the field of software and it's a joke that we get away with calling ourselves "software engineers" or "computer scientists" for how little analytical decision making or scientific method applies.
- deleted 6y ago[deleted]
- Twisol 6y ago> the resulting non-answer people come up with is: "Depends on your use-case." > We are dealing with computers here: virtual idealized worlds ripe for systematic formalism. I disagree with the premise. Generally, computers are the tool, not the product. The primary focus ought to be on the problem we're solving, not on the particular tool we use to construct a solution. You're right: design patterns are couched completely in terms of the software domain. Just knowing a handful of design patterns doesn't help you understand when or how to apply them. When you confuse the map for the territory, design patterns look like the tool, rather than a particular example of how the tool is used. No doubt, that's problematic. But I think you're under a similar illusion: that the computer _is_ the problem to be solved. The practice of software engineering sits at the nexus of (at least) two distinct domains: computer science and the problem domain, whatever it may be. Software architecture is fundamentally about understanding the shape and structure of the problem domain, understanding the capabilities of your engineering tools, and creating an architecture where both domains support each other. Your overall system architecture should flex where the problem domain flexes, and may be rigid where the problem doman is rigid. (It really does "depend on your use-case".) This kind of architecture isn't really about the computer. It's about the human developers and maintainers who have to inhabit this space for years, possibly decades. You have to think about the human factors, and understand (as best as possible) the problem domain you'll be working with. (And you have to be willing to tear it down once, finally, the problem has evolved sufficiently away from expectations.) Architecture is just a disciplne of making your life suck less later. It's not an easy discipline, and (clearly) not a well-understood one. But it's also not formal in the same way computer science or mathematics can be.
- 6y ago