The Expression Problem and its solutions
The craft of programming is almost universally concerned with different types of data and operations/algorithms that act on this data . Therefore, it's hardly surprising that designing abstractions for data types and operations has been on the mind of software engineers and programming-language designers since... forever. Yet I've only recently encountered a name for a software design problem which I ran into multiple times in my career. It's a problem so fundamental that I was quite surprised