Sadly I can’t cite exact examples right now – in the last few years I’ve worked with a mix of Elixir, Golang and Rust and some Elixir details are starting to slip away from my memory – but I have witnessed all three options:
- Library validates the config you give it and spits out a generic oh-so-helpul “invalid config” atom (or raises), often preventing your app from booting in the first place. There were some that were saying what exactly is wrong but they were a vanishing minority.
- Library does not check the shape of the config and just blows up at runtime.
- Library checks the shape of the config and silently reverts to a default when it doesn’t like your input.
The last one is my favorite. One of the teams I was in lost 3 hours once to track down such a problem (unlucky for them I was having two sick days then). They just assumed that the library would be more vocal and would not silently do the wrong thing. And as we know, assumptions lead to gray hairs.
Yeah that comment’s point 1 is my main goal and foreseen value-add from any more static typing than right now: if we can make bad state hard (or even impossible) to compile, I personally guarantee many teams will save time – witnessed a good amount of time being wasted on such problems.
Back to your OP, in my experience strong static typing does not necessarily translate to less tests per se, but when you have a dynamic language it’s also a good practice to assert on certain potential problems stemming from the dynamism (and IMO my above example is an okay demonstration of one such case).
So a strong static typing would eliminate the need for certain double-checks, let’s say. I still view that as a win. How big – that really depends on team dynamics, culture and practices – but a win nonetheless.
Also what @stefanchrobot said, with three hands raised. Many people cannot assess and positively evaluate something that removes certain problems and annoyance from appearing in the first place. Case in point: you are not thanking your trees for capturing CO2, are you? Well, maybe every now and then you should. ![]()
Strong static typing helps you avoid a class of problems early.


















