Editing
Open Sourcing the Virtues of a Perl Programmer
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Introduction == When Larry Wall introduced the Perl faithful to the “Three Virtues of a Programmer” — ''laziness'', ''impatience'', and ''hubris'' — he also explained exactly what he meant.<ref name="Wall1996" /> The explanations are far more important than the provocative labels. Taken literally, the three words name dispositions traditionally treated as vices; taken in Wall's intended sense, however, they point toward habits of judgment, energy, craftsmanship, and responsibility that can genuinely serve a programmer and a community. This paper argues that the Perl community can speak more accurately about those habits by naming the virtues Wall actually described: ''Practical Wisdom'', ''Spiritedness'', and ''Good Order''. The intended audience remains first and foremost the Perl community. The wider claim is modest: because programming communities inevitably develop ideas about what makes a good programmer, maintainer, contributor, and steward, Perl's unusually explicit vocabulary of “virtues” offers a useful case study that readers from other technical communities can understand. The purpose is not to replace Perl's culture with an abstract ethics of software, but to recover and clarify something already present within Perl's own culture. This essay is also written openly from the standpoint of a Catholic Perl programmer. Catholic and classical virtue traditions provide much of the vocabulary used to interpret Wall's descriptions, but the argument does not require every Perl programmer to share that standpoint. A reader need only ask a practical question familiar to every open-source community: what habits help people use technical power well, work together fruitfully, and hand on something worth maintaining? === Virtue, Vice, and the Long Tradition Behind Them === The language of virtue and vice belongs to several ancient traditions. Scriptural wisdom literature repeatedly distinguishes habits that lead toward a well-ordered and flourishing life from habits that lead toward disorder. In classical Greek philosophy, Aristotle gave one of the most influential systematic accounts of virtue, describing moral excellence as a stable disposition ordered by reason toward ''eudaimonia'' — human flourishing — and often situated between characteristic extremes of deficiency and excess.<ref name="Aristotle1999" /> Christian thinkers later received and developed this classical vocabulary. St. Thomas Aquinas integrated Aristotelian moral philosophy into a Christian account of the virtues, giving prudence a governing role because it applies right reason to action.<ref name="AquinasST" /> Other Christian writers emphasized how otherwise good powers can become distorted when separated from truth, right ends, or the other virtues. This language later appeared in many forms of civic and character education, including chivalric ideals and, much later, the Scout tradition. The point here is not to claim a single unbroken historical chain for every virtue named in this paper. It is to identify a durable pattern: virtue concerns the good use of human powers. A capacity can be deficient, rightly ordered, or excessive. Courage can become cowardice through deficiency or recklessness through excess; prudence can collapse into shortsightedness on one side or endless deliberation on the other. The same pattern is useful when examining the habits celebrated within a programming community. === About Objective Truth and Human Ends === Underlying both classical and Christian accounts of virtue is the claim that a virtue must be oriented toward what is true and toward a genuinely good end. Aristotle's practical wisdom requires sound judgment about circumstances and ends; in the Thomistic tradition, prudence guides action rather than merely admiring clever possibilities. Chesterton's later warning about virtues that become detached and “go mad” expresses the same practical concern from another angle.<ref name="Chesterton1908" /> In programming, truth has an unusually concrete presence. Code either behaves as claimed or it does not; data either represent reality adequately or they do not; an interface either helps its users accomplish their work or frustrates them. Yet technical truth alone does not answer every question. A program can be correct and still be needlessly hostile to users, impossible for maintainers to understand, or brilliantly optimized for a purpose that does not deserve the effort invested in it. Virtue therefore concerns both truthful understanding and the ends toward which technical ability is directed. The Perl community, like every collaborative technical culture, depends on such judgments. ''Practical Wisdom'' requires seeing the real problem rather than merely the interesting one. ''Spiritedness'' requires knowing what is worth caring enough to fix or defend. ''Good Order'' requires structures that serve people rather than rules that exist only to perpetuate themselves. When these virtues are anchored in truth and good ends, they guide the community toward clarity, cooperation, useful work, and flourishing. When that anchor is lost, even genuine strengths can pull a project off course. <div style="clear:both;"></div>
Summary:
Please note that all contributions to Perl Guilds - Getting Medieval with Perl may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Perl Guilds - Getting Medieval with Perl:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Log in
associated-pages
Page
Discussion
English
Views
Read
Edit
Edit source
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Tools
What links here
Related changes
Page information