After spending 6 months working on an Elixir codebase, and spoiled by languages with proper IDE support, I'd say Dialyzer is nice... But doesn't get even close to what I'm used to. Sometimes the benefits of the BEAM and the OTP outweight these drawbacks, of course, but to me it sucked the joy out of programming (I'm very type oriented when writing and, more importantly, reading code).
> (I'm very type oriented when writing and, more importantly, reading code).
Me too!
Have you learned any tricks for getting up to speed on large code bases with very limited static typing?
In recent years I've mostly worked on large, complex Python systems. The consequences of (undisciplined) dynamic typing not only sapped my joy in programming, it really burned me out.
Some people are really good at living with code bases like that. I'm not one of them, but I'm still hoping to find some way to bridge the mental gap.
For me it didn't go that far, fortunately, because I managed to jump ship on time... But it was getting _tiring_.
> Have you learned any tricks (...)?
My current apprach is: don't. These days I usually work in Rust, C# and sometimes Typescript. I'm only open to working with dynamically typed languages for short periods of time, as a side quest of the main task (e.g. for my last contract I had to read quite some C code, which somewhat resembled dynamically typed code, but I spent even more time writing Rust, so it was OK).
Yeah, for me it was confusing to see that many programmers seem to thrive without static typing, and in fact the 6-month Elixir project was an experiment to see if I could do the same :P (to me, Elixir is still the most appealing of dynamically typed languages)