@sliminality @samth I think there are two contributing factors:
(a) lots of intro CS curriculum has built up intuitively pleasing metaphors for polymorphism
(b) it’s easier to build “partly working” code when failures happen at runtime than compile time, which feels easier/more productive because humans are bad at evaluating future reward/punishment