I agree types prevent people from shooting in their foot. Types are what make program ide friendly, and programmer friendly. Got that.<p>But types are also what cause us to think with in the box i.e to say powerful type hierarchies, the ones that save us from writing boiler-plate are also the ones that are difficult to understand, and in Java, somewhat weird. Not to mention they are needlessly specific - Unless you have ML style parameterized types.<p>Also, note that if you are working in type safe language, does not mean you can escape writing tests. You still have to write tests.<p>Just like human body is not all bone, though it gives structure, nor a bridge is all steel, even though that is what keeps it together, likewise I don&#x27;t believe all aspects of a project should be written in a strictly and statically typed language. Dynamic types have their niche, and the nice thing about dynamic types is you are just concerned with ideas aka abstractions instead of type algebra and its mechanics.<p>Once you have protected your interfaces(with a type safe language), you are past &quot;Idk what i am reading&quot; stage, and hence in a safer place to do type agnostic things - and the sweet thing with clojure and lisps, yeah sweet if you get it, you can almost always break what you think your ceiling of capabilities is.