Categories
Engineering

Abstraction

Abstraction is a recurring theme in my work.
While it is second nature for some, most folks have too strong of a footing in concrete 😀

Everybody can do abstraction. It is a skill, it is a mental muscle that needs training. Applying it regularly to situations and using it purposefully is a different matter. A short, visual explanation on what I mean by applying abstraction purposefully.

  1. The arrow pointing away from concrete indicates the idea of abstracting away. The further we are, the more abstract the concept becomes.
    Arrows shooting out to different directions signifies that abstraction can happen along many different aspects.
  2. The arrow pointing towards the centre indicates reducing abstraction. The closer we are to the centre, the more concrete it gets.
  3. Exploring other aspects while remaining on the same level of abstraction.
  4. Starting from something concrete and walking thorough levels of abstraction before descending back does not necessarily arrive to the same concrete point.

The irony of explaining abstraction in an abstract manner is not lost on me. Future posts will include more concrete and practical points.

Example

  • You are the software architect working with a team of four on a complex problem.
  • The 4 people think about the problem and the solution in different ways
    A. Component model diagram in LucidChart
    B. Object-oriented class model diagram using UML
    C. Object-oriented pseudo code
    D. JavaScript playground on codepen.io
  • Eventually the team arrives to a common, abstract view
    △ One-pager annotated diagram using C4 in Mermaid
  • Implementing the solution
    E. Building a web app on the MEVN stack

Leave a Reply

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