| Me: dynamic -> static What did I feel during the transition: Feel like an insulted because of the under-expressiveness. Everyday I find some ideas that are natural to me and non-tech people couldn't be codified directly. Although statically typed languages are getting better each year, I still think there's a trade-off among three camps: 1. Dynamic (Ruby, JavaScript) 2. Under-expressive static (Java, C#) 3. Expressive static (Scala, TypeScript) I worked on a full-stack project and people have different backgrounds and have to switch from time to time, here's my impression: - Most "underexpressive-static -> dynamic" people hate dynamic programming, because they mostly lose typing for nothing - they usually don't leverage the expressiveness because that is how they were coding all along. - Some "dynamic -> underexpressive-static" people liked the discipline, while some hated the under-expressiveness, it depends. - The "Expressive static" was the new thing. Everybody need to learn some part. Usually, there's a learning curve, some people like the challenge while some people hate it. That also depends on how steep the curve is (TypeScript is very smooth but not Scala). Even though I think it's still trade-off, I can see the balance is shifting toward the "expressive static" camp: - People get more familiar when they're exposed to the concepts. Higher-order functions like map/filter/reduce were considered exotic in the 90s, but now they're everywhere. Monadic-like programming like Promise or Optional is also popularized, they're not hard at all once "everybody else" learned that. Advanced type systems are no different. - Language creators have more experience in choosing trade-offs that makes sense. Scala was getting a bad rap during its day, but Kotlin didn't. In other words, the creators are getting better at spending their "novelty budgets"[0] to yield optimal results. P.S. I still couldn't wrap my head that Dart spent NO "novelty budget" whatsoever... They have zero chance against TypeScript if there was no Flutter or other Google platforms that use Dart. [0] https://shimweasel.com/2018/08/25/novelty-budgets |