I once wrote a bespoke query parser for an in-house full text search app. Spent most of my time doing fit and finish for the domain specific stuff. Looked at logs of actual user searches, before and after. Even did usability testing. (Who does that any more?)
End result was "invisible", because it just worked. Totally unattainable if I'd relied solely on stock tool stack.
> This gets back to the idea of preventing frustration. I determined that it would be more frustrating to have autocorrection “guess wrong” and erroneously fix broken typing.
I work on automation a lot, and this is so hard to communicate to the endless stream of non-tech types that just want to “tweak” the algorithms to be a little bit smarter. Trust is an asymmetric proposition, requires lots of positive inputs to slowly accrete it; it takes very few negative inputs to rapidly dissolve it. It is better to be reliably/predictably helpful some of the time, than it is to usually be helpful but sometimes dishelpful all of the time.
Or as Thumper put it (kinda): “If you don’t have nuthin nice to add, don’t add anything at all.”
A beautiful live example.