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!
== Perl's Virtues == Aristotle's account of virtue is often summarized through the image of a mean between extremes. This does not mean that every virtue is a simple arithmetic midpoint, but it provides a useful way to see how a human capacity can fail through both deficiency and excess.<ref name="Aristotle1999" /> The following table gives familiar examples from the classical tradition. {| class="wikitable" |+ Selected classical examples of virtue understood between characteristic extremes of deficiency and excess ! Deficiency (Extreme) ! Virtue ! Excess (Extreme) |- | Cowardice | Courage | Recklessness |- | Insensibility | Temperance | Overindulgence |- | Stinginess | Generosity | Prodigality (Wastefulness) |- | Self-deprecation | Truthfulness | Boastfulness |- | Boorishness | Wit | Buffoonery |- | Quarrelsomeness | Friendliness | Obsequiousness |- | Pettiness | Magnificence | Vulgarity |- | Pusillanimity (Smallness of Soul) | Magnanimity (Greatness of Soul) | Vanity |} Applied to Perl, the same framework helps separate Wall's memorable labels from the dispositions his explanations actually praise. The following table summarizes the proposal developed in the following subsections. {| class="wikitable" |+ The three proposed Perl virtues viewed between characteristic deficiencies and excesses in community and project life ! Deficiency in Perl Culture ! Virtue ! Excess or Distortion |- | Repeated manual toil; failure to learn from experience; solving the visible task without considering the total cost of ownership | '''Practical Wisdom (Prudence)''' | Over-engineering; abstraction for its own sake; analysis paralysis; gatekeeping disguised as “best practice” |- | Apathy toward bugs, users, documentation, regressions, or the health of a project | '''Spiritedness''' | Combativeness; flame-war zeal; personal crusades; treating technical disagreement as disloyalty |- | Chaotic code, neglected maintenance, undocumented conventions, or structures no one can safely inherit | '''Good Order''' | Bureaucracy; rigid process; purity tests; suppressing experimentation merely to preserve existing structure |} Here we can describe what Larry Wall meant in terms that retain his practical insight while distinguishing the virtues from the deliberately provocative names attached to them. === ''Practical Wisdom'' or Prudence, Not Laziness === Unlike the vice of laziness, this virtue concerns practical wisdom: the ability to make sound decisions and take fitting action based on understanding, experience, consequences, and the real end being pursued. This aligns closely with Wall's explanation of laziness as the quality that motivates a programmer to expend effort now in order to reduce the total expenditure of effort later.<ref name="Wall1996" /> The programmer writes a reusable tool, automates repetitive work, or documents a system because doing so serves future users and maintainers. The deficient extreme is not simply “working too hard.” It is failing to learn from repeated work: performing the same tedious task indefinitely, writing disposable fixes when a durable solution is warranted, or optimizing the immediate moment while imposing avoidable costs on everyone who follows. The excessive extreme appears when foresight becomes over-engineering — a framework for a problem that may never exist, an abstraction nobody can understand, or endless deliberation that prevents useful code from being released. Practical wisdom lies in judging how much architecture, automation, documentation, and foresight the real problem actually deserves. === ''Spiritedness'', Not Impatience === Accounting for the passionate aspect of human nature, spiritedness encompasses the energy that makes a person care that something is broken, slow, unjust, neglected, or needlessly difficult. Wall's “impatience” describes anger at a computer that is failing to serve human needs and the resulting desire to make software more responsive and anticipatory.<ref name="Wall1996" /> Properly ordered, that energy is productive: it turns irritation into repair. The deficient extreme is apathy. A project can decline because nobody cares enough to fix a regression, answer a newcomer, update a document, challenge a harmful assumption, or carry an abandoned module forward. The excessive extreme is familiar to every long-lived online community: technical disagreement becomes personal combat, urgency becomes contempt, and conviction becomes a crusade. Spiritedness is therefore not mere anger; it is energy disciplined toward a good worth pursuing. === ''Good Order'', Not Hubris === Far from harmful pride, Good Order concerns the disposition to leave code, projects, and communities in a condition that other people can inhabit. Wall's explanation of “hubris” points toward the desire to write and maintain programs whose quality will withstand the judgment of others.<ref name="Wall1996" /> At its best, that is not vanity but stewardship: clear interfaces, maintainable code, responsible releases, useful documentation, and conventions that reduce needless friction. The deficient extreme is disorder: clever but inscrutable code, abandoned distributions, inconsistent processes, and institutional memory that exists only in the head of one indispensable maintainer. The excessive extreme is order treated as an end in itself — process that smothers contribution, style rules elevated above substance, or governance that protects its own machinery more carefully than the people and work the machinery was meant to serve. Good Order is structure proportioned to a real human and technical purpose.
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