The title of this post has two clauses. I was already very much aware of the first one. I complain bitterly about software with shitty messages, no matter its target audience.
I’ve always thought that cruddy messages in production software were a sure sign of lazy/thoughtless/rushed developers, and I’ve expended huge amounts of thought and effort making sure that Carrot (the language, and the processing tools, and the infrastructure of those tools) will be capable of always giving accurate, informative messages.
Today, though, this post by the estimable masak++ gave me pause and made me think about the second clause: “all the time”. As in “whether the software is production or not.”
When someone as intimately familiar with a project as Carl is with Perl 6 development gets confused (and/or misled and/or must fall back to asking implementors) by “placeholder” messages, you can be certain that someone new to a project would be utterly baffled and probably just give up.
I immediately thought of the major product of the last place I worked, which would spew “Network error” messages for any of several (dozen) error or warning conditions, because the UI developer, rather than doing things right, had lazily copypasta’d error handling code around to get things working quickly. And this was never fixed though users complained about it constantly, because there was always something more pressing that needed implementing or fixing. It caused confusion for hundreds of users and generated work for the support staff, but there was a simple workaround (“It’s lying; ignore it. Unless it isn’t, then don’t.”), so it sat unfixed for over a year.
The point is: a little effort in keeping messages correct and informative at all times will help developers and volunteers and users, now and forever.
It’s always seductive to rush and cut corners in order to get things a little more “done” a little faster, but it’s almost always a false economy — and the payoff of seeing effort made in advance saving time and trouble down the line is much better.
Nota bene: this post is in no way a critique of the Rakudo implementors. It’s a public thought/reminder/warning to myself.