For what it’s worth, a significant part of my not seeing the value of types back in the early 2010s was the combination of my own immaturity with the pretty poor quality of the systems I was working with. You can make C++ do a lot of this work for you (albeit not quite as far as a language influenced by Standard ML). But none of the C++ I ever encountered in the wild in that era did. It was all the effort with none of the benefit. I spent many, many months of my life dealing with the exact same kinds of bugs in Fortran, C, and C++ systems that I was dealing with in PHP and JS and Python. So the feeling that resulted was: why do the extra work I have to do in Fortran and C and C++ if it’s not actually buying me anything? No doubt if I’d been working on teams which were effectively leveraging C++’s type system, I might have felt differently. But I wasn’t, so I didn’t.
For what it’s worth, these days I tend to talk almost exclusively in terms of the tradeoffs involved with adopting any given type system vs. the alternatives in the space. Even as an admittedly huge Rust fanboy,[1] I don’t think it’s a panacea or a thing you should pick for every project. To the contrary. And I’d go so far as to say that there are some places where something like Erlang is going to help you solve your specific problems more robustly than Rust will, which likely sounds like heresy to many fellow fans of type systems.
For what it’s worth, these days I tend to talk almost exclusively in terms of the tradeoffs involved with adopting any given type system vs. the alternatives in the space. Even as an admittedly huge Rust fanboy,[1] I don’t think it’s a panacea or a thing you should pick for every project. To the contrary. And I’d go so far as to say that there are some places where something like Erlang is going to help you solve your specific problems more robustly than Rust will, which likely sounds like heresy to many fellow fans of type systems.
[1]: https://newrustacean.com