In the bad programming I've seen, you are spot on. There's one area where I disagree:<p>"Good programming is self-explanatory.
Bad Programming requires explanation."<p>I disagree with the first part. Good programming <i>may</i> require explanation. Bad programming <i>always</i> requires explanation. Code is not always easy to read, especially in the implementation of complex algorithms. The presence of confusion when reading code does not always indicate that the code being read is bad. However, confusion is a natural consequence of reading bad code[1].<p>I would amend your statement to read,<p>"Good programming sometimes require explanation.
Bad programming always requires explanation."<p>[1] <a href="http://www.osnews.com/story/19266/WTFs_m" rel="nofollow">http://www.osnews.com/story/19266/WTFs_m</a>