After going back and forth between weak and strong (static) typing (php, js, java and scala) i would say weak typing lets you code quicker because you can be less explicit about what you&#x27;re doing, but strong static typing lets you make code production-grade sooner because of all the additional checks which catch bugs. Weak typing feels more productive while coding, but when all is said and done often ends up being less so.<p>In php you can do strict typing at the function call boundary, which is where it really matters, but you need the discipline to do it consistently. I like scala&#x27;s approach of inferring types as much as possible and only stopping you when you&#x27;re trying to do something semantically impossible. Scala often feels like a weakly typed system while coding, which is why it&#x27;s so fun. For that matter, functional style java 8 feels the same way some of the time.<p>I think the ideal system is strongly typed but maximally inferred to minimize verbosity and maximize coding productivity. Scala is too weird to be that language though.