Why the fights [about typing levels]? Well, bluntly, because some people like fighting, and this is a good excuse. That's not a helpful answer, though.5 The battle is generally between the tinkerers and the mathematicians. Tinkerers (and hackers in the classic sense fall into this group) just like to get going, fiddle around, do their thing, and have the compiler get out of their way

I think this is an oversimplification. The main reason I don't like static typing is that it clutters up the code with lots of formality, making it harder/slower to read. Perhaps if the type declaration came after the variable like it does in Pascal instead of before, like it does in Java, it would bother me a little less.

The second reason is that dynamic execution greatly simplifies certain classes of problems. For example, if you make a generic database table browser, you don't have to know the column types at compile time. Sure, you can do such things in static langs, but it is more code. And, things like arrays containing different types in static languages can be sticky.