I've never really found that type safety helped me develop "safer" code. The most important thing for me is to be able to keep the whole system in my head. And that means to be able to reduce the lines of code.
I find that I can remember what functions need what types---my own internal "type checking"---just fine while I'm coding, debugging, and refactoring. That is, as long as I can see most of the code at a glance. Maybe about a page or two per feature. Once it extends beyond that, i want to reorganize so that I can understand it all.
What I find with static languages is that you are forced to write more code to work around the static parts. You need a method to deal with type A. You need another method to deal with type B. Et cetera. More duplicated code. More errors.
I disagree
I've never really found that type safety helped me develop "safer" code. The most important thing for me is to be able to keep the whole system in my head. And that means to be able to reduce the lines of code.
I find that I can remember what functions need what types---my own internal "type checking"---just fine while I'm coding, debugging, and refactoring. That is, as long as I can see most of the code at a glance. Maybe about a page or two per feature. Once it extends beyond that, i want to reorganize so that I can understand it all.
What I find with static languages is that you are forced to write more code to work around the static parts. You need a method to deal with type A. You need another method to deal with type B. Et cetera. More duplicated code. More errors.