Developers love to abstract things. Creating an abstraction is a lot more fun than writing glue code.
Developers write a lot of glue code, and get tired of it easily. Glue code is kinda like that email you copy and paste, and just change some details of for each person you send it to.
Would you get tired if all you did all day was join two lego bricks together? I would.
But, modern programming is a lot of joining
lego bricks. Plug this piece into that, find another piece if it
doesn’t fit, repeat.
What if you could create a lego block
joiner? Then all you’d need to do is make it so that lego brick joiner
could join any two lego bricks, and then you could spend your days on
the beach sipping mai tais.
That’s the allure of an abstraction. Joining the bricks isn’t fun, but creating something that’s able to join legos is.
If you have five lego bricks to join
together, you may not want to create a lego-brick joiner. But,
programmers may only be joining five lego bricks right now, but they’re
thinking of those potentially tens or hundreds of lego bricks they might need to join in the future. Next quarter, next year, you know, the future.
Does your business need a lego-brick joiner? The programmer will tend towards yes, even if it may not, because the joiner is a lot more fun than the idea of joining lego bricks for the rest of their days.
When you’re in your next standup, or sprint planning, or team meeting, and a programmer says they want to ‘abstract’ something, or ‘create an abstraction layer’, think of it as an investment. If you don’t need a lego-brick joiner, or you’re only doing that thing a dozen times, maybe you don’t need one.
Even if they are pretty cool.