Layers of Abstraction

layers of abstraction

Image courtesy of Wikimedia Commons Lbeaumont, CC BY-SA 4.0

Abstraction is a way of simplifying complex systems by breaking them down into more manageable parts. It lets us focus on key features or functions without diving deep into tiny details. Imagine you only look at the main picture and don’t stress over every small piece.

Take a car for instance. If you own a car, you mainly want to drive it from point A to B. You know how to drive and understand the basic controls. This means you’re familiar with the steering wheel, pedals, knobs, switches, and warning lights. When the fuel runs low, you fill it up.

Of course, there’s a high-tech engine, computer, and many electrical wires inside the car. But to drive, you only need to know the basics. Even though cars are complicated, a driver can overlook the inner complexities.

But what if something goes wrong? One day, your car isn’t speeding up as it should. Even if you press the accelerator hard, it struggles to hit 50 mph. So, you head to a car repair shop and tell the mechanic about the sluggish response. The mechanic then starts investigating the issue. Could it be a fuel pump issue? Maybe dirty fuel injectors? A blocked air filter? Or some sensor issues?

You are thinking about the pedals and other such controls. But your mechanic is thinking about the whole engine! That’s the difference in abstraction levels.

Images courtesy of Wikimedia Commons Raiko & UtzOnBike (3D-model & animation: Autodesk Inventor), CC BY-SA 3.0

Layers of Abstraction

You and are your mechanic are thinking at different layers of abstraction. The mechanic knows how to drive just like you. But he also understands the engine’s details. This helps him connect your basic description to what’s happening inside the car’s engine.

After a look, he believes there’s a problem with the fuel system. He tells his assistant to check it. You hear words like:

Examine fuel lines and hoses for signs of damage. Turn the ignition on and verify the fuel pump is priming the system. Verify the fuel pressure is close to service manual spec. Check if the fuel filter is clogged. Use your stethoscope and check if any injector is silent or sounds different. Check the throttle plate for excessive carbon buildup….

Most of it sounds like a foreign language to you. The mechanic and his assistant have their own technical conversation. They see the car differently than you do.

layers of abstraction

Images courtesy of Wikimedia Commons I, 天然ガス & UtzOnBike (3D-model & animation: Autodesk Inventor), CC BY-SA 3.0

After some time, they find out that a bad fuel filter is the problem and replace it. This experience piqued your interest and you decide to research car fuel systems when you get home.

A week later, you notice a friend’s car isn’t speeding up properly. Eager to share your newfound knowledge, you start explaining potential causes. But soon, you see she’s confused. She doesn’t know much about cars. You try to simplify using your recently acquired knowledge of fuel systems, but then realize you might not know enough to break it down clearly. So, you just send her the mechanic’s contact and drop the topic.

Operate at the Right Layer of Abstraction

When you handle a complex system, you should understand your level of knowledge and stick to it. If you work at a level of abstraction you don’t know well, you’ll get mixed up and face problems. Here’s a list of issues you might face if you work at a level you are not familiar with. Imagine a car owner who doesn’t know much about how cars work, trying to solve a problem that a professional mechanic should handle.

  1. Misdiagnosis: Without deep understanding, it’s easy to mistake one issue for another.
  2. Complicating the Issue: An incomplete or flawed understanding might lead to making the problem worse or introducing new problems.
  3. Safety Concerns: Handling unfamiliar systems or components without proper knowledge can pose risks of injury or damage.
  4. Overwhelm: The sheer volume or complexity of unfamiliar topics can lead to feelings of being overwhelmed or lost.
  5. Wasted Time and Resources: Lacking expertise might result in spending unnecessary time, effort, or money on incorrect solutions.
  6. Misinterpretation of Symptoms: Surface-level knowledge might cause one to take apparent symptoms at face value, overlooking deeper causes.
  7. Lack of Context: Knowing only a part of a system without understanding how it integrates with the whole can leave gaps in comprehension.
  8. Unfamiliarity with Tools or Procedures: Not knowing the right tools or techniques can lead to inefficiencies or mistakes.
  9. Overconfidence: A little knowledge without deeper understanding can falsely inflate confidence, leading to hasty or misguided actions.

In essence, operating at an unfamiliar layer of abstraction can lead to errors in judgment, actions, and understanding, which might result in inefficiencies, mistakes, or even risks.

Using Layers of Abstraction in Our Project

In A Simple Manifesto, we mention that we’ll cover many subjects. Some subjects are deep and have multiple layers of abstraction. When we discuss a subject, we’ll identify different layers of abstraction. Then we will pick the right level to work with to simplify an otherwise complex or complicated subject.


Subscribe to receive updates in your email:

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to Top