Abstractions are like shortcuts. They make things easier to use by hiding the complicated parts. Think of driving a car; you don't need to know how everything works under the hood, you just push pedals and turn the steering wheel. Until your engine light comes on. Or when you're using a software library, you often only need a few simple commands to get the job done. Until you find a bug. Or when you send a potential customer to the sales department. Until Sales stop closing deals. These shortcuts work great as long as everything is running smoothly. The pedals and wheel let you drive without worrying about the engine or the gears. In software, a few clicks or lines of code let you do complex tasks without seeing the thousands of lines of code that make it all happen.
But these shortcuts only work when there are no problems. If your car breaks down, suddenly you need to look under the hood and deal with the complex parts directly. When there's a bug in the software, you can't just use the simple commands anymore; you have to dig into the code and fix the problem. The same goes for a sales department. It can seem like their job is just to 'close deals,' but if sales start dropping, you can't rely on the simple view anymore. You have to look at the hard stuff, like why customers are leaving or what's going on in the market. Abstractions are handy for making our lives simpler, but they can hide important details that jump out when something goes wrong.
Here’s the thing, though: You Can’t Avoid This. The modern world is too complex. You have to rely on these simplifications and abstractions. You also cannot avoid them breaking. The modern world is too complex, simplifications and abstractions can’t handle everything.
No prescription here. This is just modern life.