I'm no longer convinced there's any meaningful difference between incompetence and malice.
By now every programmer on the internet knows their systems can have widespread consequences, and that users won't hit the happy path on the first try, and that systems will live far longer than planned, and so on.
The only place where this has a meaningful distinction is amateurism. You can only claim you didn't know any better if you weren't expected to. A professional carpenter doesn't get to say "Oops, I didn't think someone would lean on that wall." Sorry your building collapsed, but at least I didn't do it maliciously? Professionals don't take mulligans.
Corollary 1: This also applies if you build a system which is 'technically correct' but so complex nobody could be expected to understand it.
Corollary 2: This also applies if you build a system which lacks proper documentation. It's functionally equivalent to a system which is so complex nobody can understand it.
2 comments
[ 7.4 ms ] story [ 17.1 ms ] threadBy now every programmer on the internet knows their systems can have widespread consequences, and that users won't hit the happy path on the first try, and that systems will live far longer than planned, and so on.
The only place where this has a meaningful distinction is amateurism. You can only claim you didn't know any better if you weren't expected to. A professional carpenter doesn't get to say "Oops, I didn't think someone would lean on that wall." Sorry your building collapsed, but at least I didn't do it maliciously? Professionals don't take mulligans.
Corollary 2: This also applies if you build a system which lacks proper documentation. It's functionally equivalent to a system which is so complex nobody can understand it.