Eight Code Virtues (draft)
Some time ago, Jeff Langr and I came up with seven virtues for code in Agile in a Flash , and we wrote more about them over the years. The original set is: Working, Unique, Simple, Clear, Easy, Developed, and Brief. The virtues give us some words for what we like about good code, and they've been remarkably stable, with two exceptions: 1. I've added the 8th Virtue ("coherence") 2. I've dropped the ordering. Working is non-negotiable; the rest work in balance. Since I've added an 8th and people have expressed interest, it seems prudent to produce a new, fully unified version of the list with more examples and suggestions to help people translate the rules into skills. This write-up is for human consumption, of course, but there are notes and recommended readings that may help in other purposes. Let's begin: --- Evidence, Subjectivity, and Judgment The virtues are not all subjective qualities. Clear is subjective because clarity exists in the relationshi...