Indicative example. I was writing code to characterize the datastream from an instrument. It was a compiler of sorts: the end user could write some domain-specific language file to specify certain metadata to observe, e.g. power spectrum in a certain band, etc. These could be reused by other users so one could have a global standard for some state of the instrument. So, I decided on a hash table to store these user-written rules since it was a constant time lookup, and the characterization program ran real time while the instrument was running. Talking with a senior physicist who only wrote Fortran 77, he asked me why I didn't just use an array since "everything ends up being an array, anyway."
There are some things that one may not pick up just from practical experience.