Any highly skilled programmer I’ve ever met usually has a very good in-depth knowledge of many different subjects, like art, history, English grammer or politics.
I think this maybe due to:
Programmers deal with languages, the structure of which can be related to linguistics. Hence the aptitudes for language in general and English in particular (considered the technical language of programming).
Generally those with high linguistic abilities have a rather high level of comprehension, so reading texts comes more easily to them and they pick up things and learn stuff more easily than do others
They develop the ability to be meticulous fast. It’s easy to nit-pick stuff over a long period of time, but it requires great skill to do that in a shorter time frame. The necessary practice is developed.
Because expert programmers probably spend a lot of time reading code (not proportionally to how much they write, but compared to how much an average person actually reads), they gain an interest in the symbolic relationships between different semantic structures. So when they read a particular piece on the history of art, for example, it’s easier for them to make the linkages (between the period and the piece) and also they can sustain their interest for longer (force of habit). See I’d get really interested in something like that but get bored maybe after 1 hour.
Generally I’ve noticed this trend is more common amongst people’s of a software background than any of the other science, business, math (etc.) folks I’ve met.