Programming Philosophy

What follows are the values and/or maxims that I strive to meet when I'm writing code.

The Three Virtues of a Programmer

These virtues came from the book Programming Perl, and are attributed to the creator of Perl, Larry Wall. It takes three words (laziness, impatience, and hubris), which are normally attributed to vices, and reframes them in such a way that they are seen as a boon to the programmer. I came across these virtues in high school and took to them immediately. I would go so far as to say that it informs how I perceive programming as my profession.

The Zen of Python

Also known as PEP 20. While originating from Python, most, if not all, of the aphorisms are programming-language-agnostic. While the three virtues can generally be applied to pretty much any programming scenario, the Zen of Python, in my mind, is a pragmatic look at working and communicating effectively with others, both in the present and the future.

Postel's Law

Originating in the TCP RFC, it is also known as the robustness principle. This is a must if you're the creator or consumer of any kind of API with a data format. It's also another example of the "play well with others" maxim.

Software Philosophy

These ideas inform my overall technical worldview.

Free/Libre and Open Source Software

I am a big supporter of free/libre and open source software (FLOSS). The idea that a person is able to look at a given piece of (potentially complex) software, see how it is constructed, and be able to both modify and distribute those modifications legally is an amazing thing. Not to mention, growing a community of creators, modifiers, and users who work on a given project in their spare time.

Open Web

I am also a strong supporter of the open web. If the web were closed in the late 1990s, it would have been much more unlikely that I would be a programmer. Being able to see how other people made websites work gave me inspiration to make my own (which also happens to be related to freedom 1, as defined in the Free Software Definition).