[0] We'll still sometimes get an entire office of telephone help-desk people who are all convinced that $1/megabyte is the same as $0.01/megabyte, or whatever that story was a few decades back (I can't Google it any more to find it, there was a recording of the phone call).
I may be off by a factor of 10.
* Understand both the cost of making a mistake and of the process not running. Be aggressive on things that are 'nice to have' or have downstream manual re-validation. Be conservative on things that are 'must have' and immediately effect an outcome.
* First, do not harm -- program defensively and break execution on any violated expectations
* Understandable error messages at the user level are gold. The user has no idea what "schema mismatch" means. They can understanding "Column 3 had unexpected value. Was expecting 'X'. Saw: 'Y'"
--
On ugly HTML, that's a bad one, because of how ugly it can get.
I've only done toy work with it, but I hear good things about Beautiful Soup (Python). https://beautiful-soup-4.readthedocs.io/en/latest/
A dilemma I keep facing in practice is converting a text that someone else has produced in their own special way, like the ghastly cluttered HTML from a word processor. For example, do I attempt to use a Perl script to automatically convert some of the mark-up, or do I throw away all the mark-up and put back the italics by hand, with the risk of making a mistake? (If anyone knows of a good configurable or modifiable tool for converting cluttered HTML into sane HTML/XML I'd be interested to hear about it. My Perl scripts for doing it are not great.)