Killer compiler errors.
In my 10+ years experience w/ statically-typed functional programming, I can say without a doubt, the biggest impediment to both productivity and newbie-adoption is the utter OPAQUENESS of the compiler errors.
When one decides to use a compiled language, you agree to argue with the computer in exchange for correctness of code. You tell it what (you think) you want it to do, and it complains you’re not making any sense. Once you reach a common ground, the code flies, the bugs dissolve, and you’re left with a kick-ass executable.
So why, then, do compiler writers so rarely invest in making user-friendly compiler error messages? In large part, it’s because the compiler authors have a *deep* and intuitive understanding of even the most complex semantics, and like most logging, error output is a necessary evil. However, for a neophyte, the language presents just a few pieces of UX: the syntax, and the compiler errors.
At Boundless Learning, we’re a happy Scala-shop. And yet, near daily, someone on the dev-team runs into a perplexing compiler error/issue that could be quickly resolved if the compiler formatted the error just a little bit smarter, surfaced more detail, or frankly, was written in a more human manner.
Scala contributors, what you’re doing is amazing, and the opportunity to increase/ease adoption by investment in compiler errors is *significant*.