3 ms·
I'd even claim that we don't really fully understand how computer systems work anymore. Let me explain. When someone creates a new system, we could argue they
by dinvlad 4y ago
I'd even claim that we don't really fully understand how computer systems work anymore. Let me explain.
When someone creates a new system, we could argue they have a complete understanding of it, since they build everything from the "ground up". Although even then, they use a particular level of abstraction - not necessarily needing to understand how third-party libraries work, or how it all translates to machine code etc.
Imagine now this person (or a team with equal understanding of the system) leaves, and another team joins. How are they supposed to "understand" it? They would have to piece together everything very much like we're trying to do in biology. Even when the original creators left a "plan" in the form of code, docs or even being accessible for Q&A, they cannot possibly verbalize all the minute details, because the complexity of the system is so large that they would have to spend an equal amount of time on explaining as on developing it. And that doesn't even account for random things or reasons they themselves forgot, or never understood in the first place.
As a result, we're left with only a partial understanding of the system, the level of which goes down the larger the system is. And as more teams join and develop their own pieces and leave, this knowledge gets diluted so much that it becomes hopeless to even reason about the whole thing.
So, I'd argue we can only strive to understand the most important pieces. And, just like we see in biology, the process of their discovery is mostly just educated trial-and-error, aided by the tools like better diagrams to speed up the process. And maybe that's OK, if the ultimate goal is to get to some practical results like curing a disease or expanding the business. We can discover the mechanisms that lead to reaching these goals, but if they aren't relevant, then it's just going to be an academic exercise and another data point in the trial-and-error (until someone discovers how to use it for some new goal!).
- Phurist 4y agoYou do not need to know every implementation detail down the stack, just the the general concepts behind it all. But in case you do need to know a specific part of the stack very thoroughly, you can just read the source code and come up with an understanding quite soon. That is not the case with biology, if you want to know a part of the stack thoroughly, you in essence have to come up with the "source code" your self.
- dinvlad 4y ago> just read the source code That's the problem though - code is not enough for understanding. Very well-written and documented code can be, but it's not a given. And the complexity grows exponentially the more of the code there's. Unfortunately, many managers think the way you describe, while discounting the intangible knowledge that's only in the heads of engineers, and leaves with them. So they treat engineers as disposable units while thinking that possession of the code will guarantee transfer of knowledge.