プログラマの三大美徳

SES業界に身を置いていて、しみじみと思うのですがエンジニアというのは基本『生真面目で寛容な人』が多いように感じられます。

学者気質というべきか、職人気質というべきか…
1人で黙々と作業を行うのが苦にならず、言われたことを素直に行える『いい子』が多いように思います。
ただ『いい子』だからこそ、周囲に相談せずに1人でため込んでしまったり、自分1人が我慢すればいい、と思ってしまう人も多いのが悩みどころです。

世の中には同じ時間で人よりも良い結果や、少ない労力でそれなりの仕事をこなしてしまう人というのが存在します。いわゆる『要領の良い人』『仕事ができる人』。
見ていて思うのですが、こういった要領の良い人たちというのは、けっこう『面倒くさがり』であったり『不真面目』であったりします。
意外に思うかもしれませんが、面倒くさがりだからこそ『少ない時間や労力で結果を残す』ことに思考を割けますし、不真面目であるからこそ『常識に縛られない』のです。
これが真面目な人だと『社会人なのだから、自分の仕事は自分一人でやらねばならない』『楽してお給料をもらうのはいけない』という考えに縛られてしまいがちです。

優秀なプログラマが備えている『三大美徳』
優秀なプログラマが備えているという、3つの美徳をご存じでしょうか。
これはPerlの生みの親であるLarry Wal氏が定義したもので、

1.怠惰(Laziness)
2.短気(Impatience)
3.傲慢(Hubris)

の3つがそれに当たります。
え?どれも美徳じゃない?
むしろ社会人としてダメダメ?
確かにこれだけ見ると、社会人どころか人としてもダメな感じがします。反対の「勤勉」「寛容」「謙遜」と間違えたのかと思います。
しかしこの3つの言葉をそのままの意味で捉えず、上記の要領の良い人の例を思い出してながら捉えてみると、そこには別の意味が秘められています。

1.怠惰(Laziness)とは
広辞苑などの辞書をみると、怠惰とは

すべきことをせず、なまけてだらしないこと

と出ていますが、ここで言うところの怠惰の定義とは

全体の労力を減らすために手間を惜しまない気質

のことを指します。
つまりこの気質の持ち主は、役立つプログラムを書いてみんなの苦労を減らしたり、同じ質問に何度も答えなくてもよい文書を書いたりする人のことを指すのでしょう。
余計な手間や時間、労力を減らしてくれるという意味では、確かにプログラマの美徳といえるでしょう。
身近な例としては、

可能な限り作業を自動化する
DRY(Don't repeat yourself)原則・再利用を意識したコーディングをする
ドキュメントを残して同じ質疑応答を繰り返さないよう工夫する

などが該当するでしょうか。

2.短気(Impatience)とは
上記同様に、ここでは

コンピュータが怠惰なときに感じる怒り

を指して短期と呼びます。意味合いとしては義憤に近いかもしれませんね。この怒りの持ち主は、今ある問題に対応するプログラムにとどまらず、今後起こりうる問題を想定したプログラムを書くことができるか、少なくともそうしようとする人物であるとされます。
今後起こりうる問題を想定したプログラムとは、例えば

先回りをした仕組みを作る
要望に柔軟に答えられる作りにする
依存関係の小さい設計にする

などが該当するでしょう。

3.傲慢(Hubris)とは

神罰が下るほどの過剰な自尊心、または人様に対して恥ずかしくないプログラムを書き、保守しようとする気質

要するに自分の仕事にプライドを持ち、半端な出来栄えのものは作らない、ということですね。確かにプログラマの美徳です。
恥ずかしくないプログラムとは、具体的に

明快で簡潔なコード
意味のわかるコード
何か質問されてもすぐに答えられるようなコード

などが該当すると思います。

仕事には『多少の手抜き』も必要
一般的に『手抜き』『サボり』と聞くと、ネガティブなイメージや否定的な捉え方をする人が多いと思います。
しかし効率化によって時間や労力が浮けば、それらを他の業務に回すことが出来ますし、結果が同じであれば誰に迷惑をかけるわけでもありません。むしろ時間や労力が浮くぶん喜ばれるのではないでしょうか。

プログラマとは、クリエイタであり発明家でもあります。現状に我慢せず、不満を持つことは何かを生み出すきっかけでもあり、どちらかと言えば、より良いプログラマになるための素質、もしくは、心構えのようなものではないでしょうか。

上記したプログラマの三大美徳は、個人的にプログラマの素質のひとつだと思っているので、同業者の方で採用時の基準を考えている方は、ぜひ参考にしてみてください。

いいなと思ったら応援しよう!