Some computing aphorisms
Some things I’ve recently said, which struck me as worth jotting down:
Software should try not to be dumb rather than try to be smart.
By which I mean that too much magic is likely to be harmful. Software must be predictable and transparent. This is in no contradiction with being convenient; it just has to be obvious at all times what is going to happen, even if the how involves magic. Whatever magic is involved must be rock-solid, unbreakable. Magic that breaks is the opposite of smart.
It’s my bug, or your bug, or a spec bug.
Any specification must be absolutely unambiguous (including being unambiguous about what it doesn’t specify), so in case of an interoperability failure, it’s possible to look at it and say “it’s my bug” or “it’s your bug.” If that isn’t possible, the spec has a bug.