I'm no longer convinced there's any meaningful difference between incompetence and malice.<p>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.<p>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 <i>that</i> wall." Sorry your building collapsed, but at least I didn't do it maliciously? Professionals don't take mulligans.