Simplify the Communication, Not the Architecture
Have you encountered this also in your daily interactions with others? I mean the allmost automatic or intuitive Human reaction to complex problems is that they most of the time try to simplify complex cases by stripping things. Things that might at first hindsight be non-essential but at second hindsight are very essential.
Suppose you present a complex picture like the exploded view of the motor shown in the picture, the standard reaction can be to leave out details so people can have a better overview. This is where it can go wrong. If people (not you and me but all the others ofcourse) abstract complex things without knowing the essentials of the complexity, they might make the wrong (or sometimes even desastrous) decision. So the key to abstraction is that you translate a certain given complexity to a simpler viewpoint WITHOUT leaving out the essential aspects. In the example case, the abstracted picture could be a motorcycle where the exploded view of the motor is now merely an integral part of the total concept. But the details inside are still essential. And thus you cannot leave them out. Even if you think they are too complex or too costly or whatever.
I think Einstein got it right when he stated: “Everything should be made as simple as possible, but not simpler”. Map this to the exploded view of the engine and you know what I mean. So we should keep the complexity, not fight it, but abstract it only on communication level, not on architectural level! And that’s where communication skills can come in handy: if you can’t explain it to your grandmother or to your children, you should abstract your viewpoints, but not the architectural essentials! Leave the multi-layer approach (figure inspired by a Wikipedia article) intact! Happy decomplexing!