Software Development in a nutshell

Jeff Atwood reminds us of the only eternal software development methodologies:

  1. DRY: Don’t Repeat Yourself
  2. KISS: Keep It Simple, Stupid
  3. YAGNI: You Ain’t Gonna Need It

These, of course, are mere stepping stones on the road to development nirvana, the Cardinal Virtues of a Programmer, which are:

  1. Laziness: Lazy programmers do not like to write the same code more than once. Thus, a lazy programmer is much more likely to write code to be reusable and as applicable in as many situations as possible.
  2. Impatience: Impatient programmers do not like to do things that they know very well the computer could do for them. Thus, impatient programmers (who are also lazy) will write programs to do things that they do not want to have to do themselves. This makes these programs more usable for more tasks.
  3. Hubris: If programmers have hubris, they are much less likely to write unreadable code. A good bit of hubris is useful–it makes programmers want to write code that they can show off to friends. Thus, hubris, when practiced in the conjunction with laziness and impatience, causes programmers to write reusable, complete and readable code.

Note 1: This post exists because tattooing all this on my forehead would be too painful, and then I wouldn’t be able to see them either.
Note 2: The definitions of LIH are taken from Picking Up Perl by Bradley M. Kuhn.

Leave a Reply