「怠惰」「短気」「傲慢」、いきなりこの3つの言葉を見てどう思うでしょうか。
…あまりいい文脈で使われる単語ではありませんね。
大多数の方は、おそらくネガティブイメージを持つのではないでしょうか。
ところがそんな3つの性格が、まさに「プログラマー」に向いている性格とされているのです。
今回は、なぜ「怠惰」「短気」「傲慢」がプログラマーの3つの美徳とされるのかについて説明していきたいと思います。
Contents
そもそもプログラマーの三大美徳とは?
プログラミング言語Perlの生みの親である「Larry Wall(ラリー・ウォール)」さんが定義したものです。
ラリー・ウォールによれば、プログラマの三大美徳とは次の通りである。
重要な順番に上から並んでいます。
3つとも世間的にはどれもいい印象に聞こえない言葉ですが、なぜこれがプログラマにとって大切な性質なのか、実際に以下でみてみましょう。
余談ですが、ラリー・ウォールが開発したPerlをもとにまつもとゆきひろ(Matz氏)が開発したのがRubyです。どちらも宝石の名前をしていますね。
1.怠慢(Laziness)
全体の労力を減らすために手間を惜しまない気質。 この気質の持ち主は、役立つプログラムを書いてみんなの苦労を減らしたり、 同じ質問に何度も答えなくてもいいように文書を書いたりする。 よって、プログラマーの第一の美徳である。 (出典:#1 プログラマーの三大美徳その1「怠慢」 | 日経 xTECH(クロステック))
ラリー・ウォールは「効率や再利用性の重視」と表現しています。
仕事をする上で「繰り返し」というのは少なからず発生するものですが、プログラマはそれを嫌がって自動化するスクリプトを組みます。
また、優秀なプログラマは一度書いたコードを別の箇所で使い回せるように疎結合に設計します。ちょっと仕様が変わっただけで一から書き直すんのは怠惰な彼らに対して耐え難い苦痛です。
きちんと仕様を残したドキュメントを記述すれば、いちいち以前自分が書いたコードのことを質問されずにすみますね。その分、新しい機能のコーディングに集中することができます。
これらはエンジニア同士が集まって複数人開発するときに特に仕事の生産性を上げる要素としてプラスに働いてくれるでしょう。
2.短気(Impatience)
コンピューターが怠慢な時に感じる怒り。 この怒りの持ち主は、今ある問題に対応するプログラムにとどまらず、 今後起こりうる問題を想定したプログラムを書く。 少なくともそうしようとする。 よって、プログラマーの第二の美徳である。 (出典:#2 プログラマーの三大美徳その2「短気」 | 日経 xTECH(クロステック))
ラリー・ウォールは「処理速度の追求」としてこの美徳を表現しています。
コンピュータの処理が遅いときに怒り、それを解決するようにソースコードを書き直して処理性能を向上させます。
同じ問題が再発しないような防止策も加えて実施します。
また、今後起こりうる問題、たとえば仕様変更、障害対応などに強い設計を行います。
仕様変更には影響範囲の小さなコードを作る習慣をつけることで対応でき、障害対応ではプログラム中に仕込むログを充実させていれば、より短時間で問題を解決することができますよね。
単純な内部の性能向上にとどまらず、ビジネス上の問題も同様に解決していけるようになると強いですね。
3.傲慢(Hubris)
神罰が下るほどの過剰な自尊心。 または人様に対して恥ずかしくないプログラムを書き、 また保守しようとする気質。 よって、プログラマーの第三の美徳である。 (出典:#3 プログラマーの三大美徳その3「傲慢」 | 日経 xTECH(クロステック))
最後の性質である「傲慢」は、「品質にかける自尊心」を表します。
人に見せて恥ずかしくない、誰にでもわかるような、美しいコードを書くこと。
テストを徹底的に(自動化して)行い、製品としてどこに出しても恥ずかしくないクオリティを担保すること。
この2つが徹底されていれば、新しく来るエンジニアも定着しやすいでしょうし、ビジネスのステージが上がっても開発速度を保ったままコーディングを進められるのではないでしょうか。
これが傲慢であることがもたらすプロダクトへのベネフィットです。
まとめ
前段で「怠惰」「短気」「傲慢」がそれぞれどのようにエンジニアの成果物にプラスの影響を及ぼすのかを説明してきました。
これらがなぜプログラマの美徳であるのか、納得できた方もいるのではないでしょうか。
周りの優秀なエンジニアを見ていると、普段から上記のような行動を無意識にやっているように思えます。
もしあなたが駆け出しのエンジニアであっても、今すぐ意識して実践してみましょう。あなたの中の美徳は、実践の中で磨かれていくことでしょう。
最終的には無意識的にこれらの行動ができるようになれるといいですね。
プログラマが持つべき心がけについては、「情熱プログラマー」などを読んでみるといいと思います。
本書は、等身大のプログラマの一人がキャリア開発の重要性を説き、そのための心構えなどを示したもの。「プログラマはビジネス視点を持って意識的なキャリア開発をすべき」という視点から、その実践方法を著者独特の生き生きとした共感できる語り口で伝える。
- 「怠惰」は効率や再利用性の意識
- 「短気」は処理速度の追求
- 「傲慢」は品質にかける自尊心
- できることからでいいので実践してみよう