プログラマが知るべき97のこと/他者への思いやりを意識したコーディング

プログラマは1人で作業することが多いので、どうしても、問題を自分1人だけで解釈し、その解釈だけを頼りにコードを書いてしまいがちです。多くの場合、プログラマはどこかのチームに属してはいますが、結局は一人一人が孤立してコードを書くことになります。孤立して作業をしていると、このコードはいずれ他人によって使用され、実行されるのだということを、つい忘れがちになります。他人がコードを拡張することもあれば、自分の書いたコードに依存して誰かがコードを書くこともあるということを忘れてしまうのです。ソフトウェア開発の「社会的側面」は見過ごされやすいのです。ソフトウェアを作るには技術も必要ですが、他人との関わりも重要です。ずっと下を向いて作業をしているのではなく、時には顔を上げて、自分は1人で働いているのではないのだ、ということを思い出すようにすべきでしょう。プログラマには、開発チームだけでなく、ソフトウェアに関わるすべての人の成功に寄与する責任がありますが、その責任は他の全関係者と共有しているのです。

孤立していても、自分の世界に没入していても、質の良いコードを書くことは確かにできます。仕事が一種の自己追求になっている人もいるでしょう(これはもちろん「自分勝手」「わがまま」というのとは違います。ただ、関心が外ではなく内に向いているということです)。コードを書く間は、完全に没頭し、「禅の境地」のようになっているのかもしれません。そうなれば、コードの質は間違いなく上がるので、私自身もそういう状態で仕事をしていることはあります。しかし、その仕事の成果が本当に開発チームのためになっているのか、ということは常に意識していなくてはならないでしょう。

Linuxディストリビューションの"Ubuntu"はよく知られていますが、Ubuntuは元々、ズールー語で「他者への思いやり」というような意味です。そのUbuntuの理念は"Umuntu ngumuntu ngabantu"です。これもズール一語で、翻訳すると「人間は、他の人間がいるお陰で、人間になっている」というような意味です。自分が良い方向に進めるとすれば、それは誰か他の人が良い行動を取り、そうなるようにしてくれるからです。反面、自分が何か悪い行動を取った時には、その行動によって誰か他の人が悪い方向に進む恐れがあります。話をプログラマだけに絞ったとすれば、「プログラマは、他のプログラマがいるお陰でプログラマになっている」と言うことができるでしょう。さらに話をコードに絞れば「コードは、他のコードがあるお陰でコードになっている」とも言えます。

誰かが書いたコードの質は、必ず他の誰かが書くコードの質に影響します。もし私が質の低いコードを書いてしまったとしたらどうでしょうか。その場合は、誰か他の人が非常に質の高いコードを書いていたとしても、私のコードを利用した途端に悪影響を受け、同じレベルにまで質が低下してしまいます。その悪影響を減らすためのテクニックは多数ありますが、悪影響がなくなることはありません。いずれにしろ、他の人に本来する必要のないことをさせてしまうのです。自分の世界に没入して他人のことを一切考えなければ、そういう事態に陥りやすいでしょう。

自分のコードはすでに質が高いと思っていても、他のプログラマの存在を意識すれば、より良くする方法が見つかる可能性があります。他人の存在を意識したコードとはどういうものでしょうか。多分それは、一見しただけでは、単なる良いコード、クリーンなコードと区別がつきません。しかし大事なのは、コードそのものの質ではなく、他への影響です。他人の存在を意識すれば、他人の書くコードにも当然良い影響を与えることになります。チームの同僚のことを考え、思いやりを持ってコードを書けば、それは同僚たちにとって価値あるコードとなり、いずれ自分にも良い影響となって返ってきます。どんなかたちであれ、そのコードに触れた誰もが、触れる前より良い人間、良いプログラマになれる、そういうコードを書くようにすべきでしょう。

禅は元来、個人的なものですが、Ubuntuの理念は、集団のための禅と言えるかもしれません。ともかく、プログラマが他の人への思いやりを持たずにコードを書くことはあり得ない、ということを常に忘れてはならないのです。