これからプログラマーになろうと思っている人、プログラマーとして働いている人にも知って欲しいのですが、プログラマーには『三大美徳』があります。

なんか、凄そうだなっ

プログラマーの三大美徳とは『怠惰』『短気』『高慢』

嫌な奴だな・・・
プログラマーの三大美徳は『怠惰(Laziness)』『短気(Impatience)』『傲慢(Hubris)』と言われています。優秀なプログラマーが備えている心構えが、この三大美徳です。
怠惰(たいだ)、短気(たんき)、傲慢(ごうまん)という言葉には、良いイメージがありませんよね。どちらかというとネガティブなイメージが強い言葉です。なぜ、プログラマーの美徳といわれているのでしょうか?
このページでは『プログラマーの三大美徳』について紹介します。
プログラマーの三大美徳
「プログラマーの三大美徳」は、1987年にラリー・ウォールが提唱しました。ラリー・ウォールは『Perl』というプログラミング言語を開発した人です。
なぜ、「怠惰」「短気」「傲慢」が三大美徳なのか、もとの内容を踏まえつつ、わかりやすく噛み砕いて紹介します。
怠惰(Laziness)
プログラマーの三大美徳のひとつ目は『怠惰』です。

サボりたい
システムを構築するときに大切なのは『効率』と『再利用性』です。
システムを導入する目的は『効率化・省力化』ですよね。言い方を変えれば「どれだけサボれるか」
効率を求めると言うことは「面倒くさいこと」をできるだけ「システムに任せられないか」を考えることです。
「面倒なことはやりたくない」
この考え方は、プログラマーにとても大切です。プログラミングの目的は『効率化・省力化』です。何度も繰り返す処理、面倒くさいことはシステムに任せる。
さらに同じものを何度も作るのはナンセンスですよね。できるだけ再利用できないかを考えるのはプログラマーには大切な考え方です。同じプログラミングを何度も書く必要はありません。実績があるロジックを再利用できないか。
実績があるロジック、例えば、Gofの『デザインパターン』を知っていれば、プログラミングの考え方は何度でも再利用できます。
また、何度も質問されるようなことはマニュアルにして、毎回答える必要をなくすなど、できるだけサボることを考えましょう。

「怠惰」=「効率と再利用性の重視」
短気(Impatience)
プログラマーの三大美徳の二つ目は『短気』です。

我慢しない
システムの使いやすさには『処理速度』があります。せっかく作ったシステムの処理が遅かったら、ユーザーはイライラしてしまいます。プログラマーは、どうすればレスポンスの良いシステムになるかを考える必要があります。
さらに操作方法がわかりにくい、面倒な手順が多いシステムは使いにくい。
「イライラするシステムは悪だ」
処理速度を早くするために、どのようなロジックでプログラムを作る。さらにユーザーの要求に対して柔軟に対応できるプログラムを書く必要があります。
使用するユーザーがイライラしないように、プログラマーは様々な操作を想定したプログラミングをすることが大切です。また、自分のクビを閉めないように、できるだけ仕様変更がない、カスタマイズが簡単にプログラミングをする必要があります。

「短気」=「処理速度の追求」
傲慢(Hubris)
プログラマーの三大美徳の三つ目は『傲慢』です。

僕が一番なのだ!!
リリースするシステムは、誰にも文句が言われないシステム、つまりバグが少ない『品質が高い』システムである必要があります。
リリースするシステムは、必ずメンテナンスが行われます。操作方法や、レスポンスだけでなく、プログラミングしたソースも完璧で誰からも文句を言われない論理的で、理論整然としたプログラミングを書くことが求められます。
バグがないプログラミングは、もちろんですが、他のプログラマーが、すぐにカスタマイズできるようにシンプルで美しいプログラミングをする必要があります。そして、そのプログラムに責任を持ちます。

「傲慢」=「品質にかける自尊心」
三大美徳は性格ではありません
プログラマーの三大美徳は、こんな性格にならないといけないというわけではありません。どちらかというと、こんな目線でシステム開発を行いましょう。ということだと思います。
プログラマーとして目標とするプログラムは、単純でメンテナンスしやすいプログラムなんです。そのためには、シンプルに必要な処理だけを美しくプログラミングする必要があります。
プログラマーの三大美徳と言われていますが、システムエンジニアも含むプログラミングに関わる人は、「怠惰」で「短気」なユーザーに文句を言われないように「傲慢」になるくらい高い品質のシステムを提供できるようになりたいものですね。

良かったよ、プログラマーを見る目がかわりそうだった・・・

プログラマーの考え方を「ネタ的」に喩えているだけなんだよ

ただ、プログラマーは性格が悪くなる・・・

それは、言わないでっ!!
プログラマーの三大美徳ではありませんが、実際にプログラマーの職業病というか、良いプログラマーは性格が悪くなっていくような気がします。機会があれば、別ページにまとめます。
プログラマーが性悪になる理由は、今回のテーマに関係ないので、先に進みますね。
プログラムの三大美徳を意識してプログラミングを行うことは、僕の経験上重要だと感じます。シンプルに美しいプログラミングを意識できると、周りから一目置かれるプログラマーになれるし、何よりも仕事が早くなります。
爆速プログラマーは、良い意味で「怠惰」「短気」「傲慢」です。
プログラマーの三大美徳に反するとき
とは言っても、色々な要因があって三大美徳に反してしまうことがあります。実際には、三大美徳を意識していないシステムが多いのも事実です。
そんなシステムの傾向として

どういうことだ?
みんなが意識すれば問題ないだろ?

意識できていないときがあるんだよ
残念ながら、プログラミング初心者のプログラマーは、知識が少なく、知っている命令、ロジックで独自のプログラミングをしてしまうことが多いんです。プログラミングは、手を取り足を取り教えるのって難しいんですよね。
そして、初心者のプログラマーは、難しく考える傾向があるんですよ。サボろうという気にならないんですかね。
理由は分からないのですが、プログラミングスキルがついてくるとシンプルなプログラムを書く人が多くなってきます。
さらに納期間近に大量の仕事が残っていると、やっつけでプログラミングをしてしまうときがあります。はっきり言って美しいプログラミングよりも「早く終わらせなければ」と雑に作ってしまいます。
後で、困るのは分かっているんだけど「とりあえず」で終わらせてしまうなんてことがあります。
本当の『プログラマーの三大美徳』
ラリー・ウォールは、プログラマーに必要とされるのは「効率と再利用性の重視」「処理速度の追求」「品質にかける自尊心」の3つだと考え、それらをこの三大美徳に当てはめて説明しました。一見逆説的でありながら、やけに説得力のある考え方ではないでしょうか。
プログラミングを行うときに、この『三大美徳』を思い出してください。
「もっとシンプルにならないか」
「早い処理にならないか」
「再利用できないか」
そして、作ったプログラムに「責任が持てる品質」なのか。
より良いプログラマーになるために必要な要素です。
コメント