The main thing I miss about static typing is being able to look at a function in isolation. When working on a function in a dynamically typed language it's so hard to know what exactly is valid input to the function and what in the world the input actually means in human terms. You basically just have to know all the call-sites by heart. Not ideal imo. While transitioning from #golang to #clojure, I really missed being able to hover over any variable and field and learn what that thing actually means and what the different variants of a thing are. I found that Go code is exceptionally well documented. Exported names are almost always documented, so finding out what a thing is just consists of going there and reading it. In Clojure I have to do code archeology to find out what I'm dealing with.