3 ms·
The Blind Men and the Elephant: A Story of Noobs
- InclinedPlane 16y agoThis is just another example of the "clear only if known" (COIK) problem, which is pervasive especially in tech. The proper way to explain a complicated system to someone who doesn't know anything about it already is to start with the most basic of simplifications, start with a mental model and build up from there, adding levels of detail at each step, making sure that each level of detail makes sense in the context of the previous level. Working from overly simplistic, inaccurate abstractions down to the nitty gritty details. Instead what tends to happen is that people describe each component in detail and the entire system in too much detail. None of it makes sense because none of it has context, but eventually with persistence and immersion it may make sense, but it's a lot more difficult than it should be. Nobody sensible tries to teach someone about how cars work by giving them a circuit diagram of the EFI system, yet that's not too far off how many devs are introduced to complex systems in software engineering. The problem is far worse than this may seem though. Because at a very fundamental level software engineering lacks a common set of abstractions and a common language to even properly discuss software design at a wide range of levels of abstraction. This is reflected not just in problems educating "noobs" but also in the very design of most software. This lack of vocabulary and mental models is devilishly intertwined with a distinct lack of design patterns at certain scales in software, which helps explain why so much software tends to be a tangled mess of crap rather than well-designed and modular. We build big ball of mud after big ball of mud instead of tractors, cathedrals, and cruise ships partly because we don't have the intellectual tools (vocabulary, models, design patterns, etc.) to tackle design problems on that scale. Compare the complexity of software architecture patterns such as MVC or layering to the construction patterns of, say, an automobile, a house, or an airplane. When you start doing that you realize just how incredibly young this field still is.