Abstraction in Art & Programming

Abstraction in Art & Programming

Abstraction: From Canvas to Code

Abstraction is one of those words that lives comfortably in two worlds that seem far apart: the art studio and the developer’s desk. In both spaces, it’s about focus—deciding what matters, simplifying what doesn’t, and giving people a way to see or use something at a higher level.

Abstraction in Art

In art, abstraction is the move away from literal representation. Instead of painting a tree that looks exactly like a tree, the artist might use shapes, lines, and colors to capture the idea of “tree-ness” or the feeling of standing in a forest.

  • Purpose: Evoke emotions, concepts, or moods rather than depict reality.
  • Effect: Invite viewers to interpret and find their own meaning.
  • Examples: Kandinsky’s color fields, Picasso’s Cubist portraits, Rothko’s monumental rectangles of color.

Here, abstraction is about freedom—distilling form down to essence so you can express something deeper or more universal.

Abstraction in Programming

In programming, abstraction means exposing only what’s necessary and hiding how it’s done. Instead of painting moods, you’re managing complexity.

  • Purpose: Let developers work at a higher level without worrying about low-level details.
  • Effect: Code becomes easier to maintain, reuse, and reason about.
  • Examples:
    • Functions that you call without knowing their internals.
    • Interfaces like PaymentProcessor or NotificationService that hide the specific APIs used.
    • Frameworks and libraries that give you simple methods but manage memory, connections, or rendering under the hood.

Here, abstraction is about control—carving clear layers so you can build complex systems without drowning in detail.

Same Word, Different Outcomes

AspectArtProgramming
GoalExpress essence, invite interpretationManage complexity, enforce contracts
Details HiddenLiteral form and perspectiveImplementation, data structures, algorithms
Success MeasuredEmotional/conceptual impactCorrectness, scalability, maintainability

“What Is the Abstraction of Your Code?”

If someone asks you this in an interview or code review, they’re asking: what high-level idea does this piece of code represent, and what lower-level details does it hide?

A good answer covers:

  • Name the abstraction: “This is a Repository pattern for user data.”
  • Describe responsibilities: “It provides addUser, getUser, updateUser…”
  • Highlight hidden details: “It handles SQL queries, connection pooling, and row mapping internally.”
  • Explain the benefit: “Callers never touch raw SQL—they only work with high-level user objects.”

This shows that you’re thinking like an architect: defining clear boundaries, exposing meaningful concepts, and shielding others from unnecessary complexity.

Bottom Line

  • In art: Abstraction strips away detail to evoke meaning.
  • In programming: Abstraction hides detail to manage complexity.