プログラマーの三大美徳とは
「プログラマーの三大美徳」とは、プログラマーに必要な要素を整理したものを表します。この考えを唱えたのは、プログラミング言語Perlを開発したラリー・ウォール(Larry Wall)です。手短にお伝えすると、怠惰(Laziness)、短気(Impatience)、傲慢(Hubris)の3つからなる考えです。
ラリー・ウォールは、代表的なプログラマーであり、作家でもあります。言語学を学んでいることから、著作も多いことで知られています。
ラリー・ウォールが提唱した内容
ラリー・ウォールは、Perlを開発したのち多数のPerl解説本を出版しています。数多くの出版物は、オライリー・メディア社を通じて発行されていますが、原文「Programming Perl」という通称ラクダ本にこの考え方が掲載されています。
日本語版では、オライリー・ジャパンから出版された「プログラミングPerl 第3版 VOLUME 1」に掲載されています。
原文で用いるLazinessとは、怠惰な考えや怠け心を指します。Impatienceは、短気やせっかちを意味します。Hubrisは、傲慢や思い上がりを意味します。
プログラマーの三大美徳の詳細
怠惰・短気・傲慢の用語は、そのまま受け取るとマイナスのイメージが付きまといますが、本当にそうでしょうか。ここで正しい理解をし、これらの要素を実践できてこそ一流のプログラマーの資質が高いと言えます。3つの美徳の具体的な内容は、以降で解説します。
三大美徳の怠惰とは
怠惰(Laziness)とは、全体的な使用効率を高めたり、無駄な労力や苦労をかけないための最適化について、手間を惜しまず多大な努力をつぎ込む資質を表します。他の利用者に役立つように、高効率の省力化されたプログラムを書くように心がけます。
それに関する多くの質問が寄せられないように、成果物としてドキュメント整備を進めます。
これは、現代における自動化・省エネ化・効率化などに通じる言葉です。言い換えると、「楽するために努力を惜しむな」という意味合いになります。プログラマーは元来、面倒くさがりですのでそれを逆手に取った言い方です。
三大美徳の短気とは
短気(Impatience)とは、コンピュータ自体が怠け者になった際に感じる怒りを表します。
コンピュータがしっかり動作するように、自身のニーズに反応するだけでなく、想定通り動作させるために処理を定義し予測するプログラムを書くようになります。イライラさせないように事前に対策することを指します。
これは、ソフトウェアの仕様を策定し改良や再利用を促す言葉です。保守性向上にも当てはまります。言い換えると、「安定動作に向けて改良を続けよ」でしょうか。惰性で作業することへの戒めと理解しましょう。
三大美徳の傲慢とは
傲慢(Hubris)とは、過剰なプライドを抑えてきっちり仕上げることを表します。つまり、他の人が悪口を言わないような理想的なプログラムを書いて維持する資質を指します。
これは、第3者の要件に対応しても完成度を上げることを表します。言い換えると、「過信せずに耳を傾け完成度を高めよ」との意味合いとして受け取ることができます。良い意味でのハッカーのようにスキルを極められることが目標となります。
三大美徳をまとめると
ラリー・ウォールによって提唱された三大美徳を、プログラマーの視点でまとめると、「楽するために努力を惜しむな」「安定動作に向けて改良を続けよ」「過信せずに耳を傾け完成度を高めよ」のように理解できます。
原文自体の用語の説明は抽象的な言い回しです。実際には、怠惰、短気、傲慢の用語から伝わる意味合いと異なり、プログラマーにとっての洗練された最適なコード開発を促す心構えが理解できると思います。
超一流のプログラマーである著者の提言している言葉は深みがあり、これを理解できるとプログラマーの資質が高いと言えそうです。
もう1つの教え「HRT」
もう1つの教えとして、「Team Geek 」で用いられた「HRT」があります。日本語版は、「Team Geek ―Googleのギークたちはいかにしてチームを作るのか」として、オライリー・ジャパンより出版されています。
HRTとは、Humility(謙虚)、Respect(尊敬)、Trust(信頼)の頭文字をとった造語で、3つの原則を表します。ここでは、HRTについても触れていきます。
【参考】:Team Geek
日本語版に用いられているギークとは、卓越した能力をもつ人です。Googleの物凄い能力を持つエンジニアを如何に無駄なくまとめ上げていくのか、というチーム論が紹介されています。
Team Geekとは
Team Geekとは、ソフトウェア開発エンジニアである著者がGoogleのプログラマーからリーダーを経験したことから、チーム活動やプロジェクト体制に関するエッセンスをまとめた書籍です。
個々のプログラマーの活動に加えてチーム力を高める考え方は、エンジニアの経験談に基づいており、共感できると評価されています。
【参考】:Team Geek
HRTの謙虚とは
謙虚(Humility)とは、他人の意見や指摘を素直に受け入れて自分を改善していく心構えを指します。本書では、「世界の中心は君ではない。君は全知全能ではないし、絶対に正しいわけでもない。常に自分を改善しよう。」と表されています。
【参考】:Team Geek
HRTの尊敬とは
尊敬(Respect)とは、相手に対する思いやりを忘れずに敬意をもって接する考え方を指します。本書では、「一緒に働く人のことを心から思いやろう。相手を一人の人間として扱い、その能力や功績を高く評価しよう。」と表されています。
【参考】:Team Geek
HRTの信頼とは
信頼(Trust)とは、お互いに信頼しあい役割を任せる協調関係を示しています。本書では、「自分以外の人は有能であり、正しいことをすると信じよう。そうすれば仕事を自分以外の誰かに任せることができる。」と表されています。
【参考】:Team Geek
チーム活動の成否
プロジェクトでは、個人のプログラマーの能力だけでは成り立たず、チーム全体の協調性が求められます。
メンバー全員が最適に行動する際に妨げになるのは、人間関係の衝突です。これは、前述した謙虚・尊敬・信頼の欠如により生じるとされています。この予兆があれば改善していくことで、全体が保たれ、チーム文化が醸成されていきます。
プログラマーの三大美徳とHRTの視点の違い
プログラマーの三大美徳は、プログラマーのプログラミングに対する心構えや資質を表しています。Perlの解説書で触れている内容でもありますので、考え方の中心はエンジニア自身です。エンジニアの専門性を高める考え方と言えます。
HRTは、チームで活動し効果を最大化するための原則を表します。チームマネジメントで必要となる、個人の約束事を原則として決めたものです。チームとしての協調性や成果の出し方を整理しています。
中には有害な人とどのように付き合うか、という少々耳の痛い内容にも踏み込んでいます。より範囲の広い活動やマネジメントの役割としても活用できることが分かります。
上記のことから、2つの考え方は対象範囲に違いが見られ、両立する考えだということが分かるでしょう。
プログラマーの三大美徳とHRTはともに活用できる考え方です
プログラマーの三大美徳は、プログラマーのプログラミングに対する心構えや資質を表しており、個人の能力開発に有効です。HRTは、チーム能力の最大化の原則ですので組織力向上につながります。2つの考え方は両立する考え方ですので、フェーズや対象範囲に応じて活用することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから