Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Abstractions.pdf

Avatar for Abiodun Olowode Abiodun Olowode
September 12, 2025
39

 Abstractions.pdf

These are the slides from my talk titled “Abstractions: Friend, Foe or Frenemy” at Friendly Ruby 2025 in Romania.

Avatar for Abiodun Olowode

Abiodun Olowode

September 12, 2025

Transcript

  1. Introduction Name: Abiodun Olowode Short Form: AB Current Position: CTO

    & Co-Founder Metrifox Based in: Essex, UK Nationality: Nigeria
  2. Agenda 01 What an abstraction is not! 02 What are

    abstractions really? 03 What makes a good/bad abstraction? 04 When and how to introduce abstractions 05 Code Examples all the way
  3. Just trying to debug a missing email. Now, I’m 5

    layers deep in NotificationContextRunnerProxyDecorator
  4. "All problems in computer science can be solved by another

    level of indirection." — David Wheeler (with a caveat by Tony Hoare: "...except for the problem of too many layers of indirection.")
  5. Hiding a mess does not make it less messy Do

    we really need that Orchestrator Service?
  6. Identify Shared Behaviour Get the user’s preferred channel based on

    an identifier per event (eg. timeoff_approval) Send a message based on the channel preference per setting (email, sms, push) Craft different messages per channel (text message is diff. from email)
  7. Every good abstraction should aim to: ▪Preserve Clarity ▪Be easy

    to use ▪Expose intent while hiding details and complexity ▪Keep behaviour as close to data as possible
  8. Closing Thoughts Duplication is fine (for now) Behaviour beats structure

    Tell, don’t ask The best use of a tool is to not use it unless you need to