For a while, I struggled with when to reach for a behaviour or a protocol in Elixir. Then I read the prefect one-liner:

Behaviors are for modules; protocols are for data.

Now it makes sense.