| You don't need to understand all the stuff you use. How complex it is is not relevant unless it has a tangible impact. eg. I use spark a lot. I don't really deeply understand how the DAG is translated into a distributed computation and the results are aggregated from the cluster. It calculates things. It's fast. Sometimes I'm surprised by things that are slower than I expect. Oh well. Don't do lots of column renames. /shrug It's a tradeoff. Is the effort to understand the detail worth the benefit of doing so? Does not understanding it cause enough pain that it become prohibitive to develop using it? Is it for spark? No. I really don't care how it's implemented. I don't even know scala. It works fine. Is it for assembly? No. I don't care at all how my code is JIT'd to assembly / code. It just works. It it for react hooks? I honestly haven't personally found it to be... but I don't write custom hooks much. So, your experience with hooks might be different, and you may find the trade-off is more expensive if your case, because it tangibly causes, eg. bugs when you write your code. ...but you are quite wrong if you think that not understanding how something works is a fundamental obstacle to using it. That is categorically false. I would argue that it's far from proven that using complex systems necessarily causes the complexity of your system to balloon out of control... or that there is even a strong casual relationship between "mental model being complex to grasp" and the resulting complexity of the system. |
All of sudden, the magic stops and you have to deal with a ream of obtuse stack traces, problems that completely smash your metal model of what's going on, and you end up in deep rabbit holes of stuff you don't want to get into at the worst possible time. That is a fundamental obstacle.