TechとPoemeの間

Qiita に書かないエンジニア業の話

「プログラマの三大美徳」と「HRT」を使い分ける - 「コードを憎んで人を憎まず」

TL; DR

プログラマの三大美徳」はソフトウェアに向けるものであり,人に向けるものではない.

「HRT」は人に向けるものであり,ソフトウェアに向けるものではない.

 

プログラマの三大美徳

プログラマの三大美徳というものがある.Perl を開発した Larry Wall が提唱したもので,「怠慢」「短気」「傲慢」からなる.

詳しくは上述のリンクにある各解説記事に譲るのだけど,例えば「怠慢」とは,「エンジニアとして手間を省くために最大限の努力をする気質」を指す.元の Larry Wall の記述では当たり前過ぎて省略されているのだけど,「最大限の努力」とは「仕事をしないために交渉する努力」ではなく「技術で手間を解決する努力」を指すものだと思われる (勿論,場合によっては前者が大事になるケースも有るのだけれど) .

プログラマの三大美徳は "怠慢", "短気", "傲慢" である」というワーディングは非常にキャッチーであり,それが故に誤用されることがあるのかなぁと思うのが私の問題意識である.「(プログラマ | エンジニア) は (怠慢 | 短気 | 傲慢) じゃなきゃね」と言い始めてしまい,その本質を見失ってしまうケースに遭遇したことが少なくない.ビジネスチームの依頼に対する態度に (怠慢 | 短気 | 傲慢) さを出してしまったり,,ユーザーファーストで考えなきゃいけない状況でエンジニアファーストで (怠慢 | 短気 | 傲慢) さを表に出してしまったり,という様子を目にしたことや,自分のことを振り返って思い当たる節があるのは,私だけではないと思う.

こういう道徳的な話は言葉にしてしまうと当然なことにしかならないし,「自分はそんなことない」と思ってしまいがちだけど,こういう誤解をして間違った (怠慢 | 短気 | 傲慢) をまとっているときこそ,理性を失って正しい選択を出来ない状態になっていはずだ.常日頃から「自分はプログラマの三大美徳を勘違いしていないか」を問いかけるべきだと思う.

HRT

一方で,プログラマやエンジニアが人に対して持つべきマインドセットを表すものとして有名なものに HRT がある.『Team Geek』という本で「優れたチームが優れたソフトウェアを作るのに必要な三本柱」として紹介されているもので,「謙虚 (Humility)」「尊敬 (Respect)」「信頼 (Trust)」の頭文字を取ったものである.

HRT が大切というのは自明というか当然なのだけれども,HRT は人 (チームメンバー) に対して適用するべきで,チームのソースコードに適用するべきではないことには少し気をつけるべきだとも思う.

それまで本番で大きな問題なく動いているコードだからと「尊敬」を持ってリファクタやアーキテクチャの見直しを躊躇ったり,テスティングの不十分なコードはきっと動くはずと「信頼」してデプロイした後に毎度手動で動作確認をしたり,というのは間違った HRT の使い方である.

特に,自分よりも経験のある,尊敬するエンジニアが書いたコードだからと遠慮してしまうことが,自分にはよくある.しかし,彼 / 彼女が書いたコードが必ずしも正しい解決策とは限らないわけで,変に遠慮せず自分が正しいと考えていることをしっかり (HRT を持って) 議論する姿勢が大事だと思う.

コードを憎んで人を憎まず

 こういう文脈で,前職時代に後輩に一度話したことがあるのが,「コードを憎んで人を憎まず」という言葉である.

自分がこの言葉を口にするようになったきっかけはいろいろあるのだけれど,大学時代のゼミ教官ディベート卒業論文の中間発表をするときによく口にしていた「論を憎んで人を憎まず」というモットーが自分の中でのルーツなのかなぁと思う.

特に卒業論文の中間発表では,中途半端なものやツッコミどころをたくさん抱えたものが出てきたときは,教官もゼミメンバーもバンバンと叩かなきゃいけないのだけれど,このときに人格否定になってはいけない.ゼミメンバーはお互いリスペクトを持ち,2年間のゼミ活動が最後まで円滑に進めるために必要だったのが「論を憎んで人を憎まず」の精神だったのだと思う.

この精神はアジャイルチームにも全く同じことが言えて,チームは一度コードを書くだけで終わるのではなく,プロダクトが続く限りは続くのだから,チームメンバー間の HRT を保ちつづける姿勢は非常に重要だと思う.

 

ということで,2017 年は去年よりも更に,チームが正しい場所で「プログラマの三大美徳」を発揮し,正しい場所で「HRT」を発揮できればなと思う.