Programmers have absolutely no abstract thinking.
Proof: everyone has read and knows Erich Gamma’s “patterns” (judging by applicants’ résumés). But in practice they know and use only the singleton. And even that is because it’s the same thing as a global variable, and they were taught that in Pascal lessons (essentially, an antipattern).
Until you rub their noses in it, a programmer can’t figure out on their own that a given pattern can be used in this context. Usually in such cases programmers’ eyes go wide, they freeze, and they look as if they’ve heard revelations from God.