EDIT: I’m a bit embarrassed by this post now, and strongly disagree with my former-self. See my followup post How I Learned to Stop Worrying and Love Types
But here’s my issue with statically typed languages: They make it easy to be lazy. You can access the property of an object that is a property of an object that is a property of this object and you can be sure it will be there! Otherwise the compiler would tell you, right?
The lack of type checking at compile time means you must write small, modular code that only does a few things. If you’re accessing the property of a property of a property of an object there’s a good sign either you need to break things out or you’re some kind of masochist, setting yourself up for long nights of debugging over a bowl of spaghetti.