プログラマが知るべき97のこと/超人の神話
ソフトウェア業界で長く仕事をしている人なら、一度はこんな質問を受けたことがあるのではないで、しょうか。
XYZという例外が発生したんですが、何が問題なんでしょうか?
—誰か
こういう質問をする人が、スタックトレースやエラーログを提示してくれたり、問題の起きた状況について、詳しく説明してくれたりすることはまずありません。あなたを、自分とは別世界の人間だと考え、十分な情報を与えられなくても、少し話を聞いただけで問題を解決できると思っているのかもしれません。超人だから何でもすぐにわかる、と思っているのかもしれません。
ソフトウェアのことをよく知らない人が、こういう質問をするのは仕方のないことでしょう。彼らにとって、コンピュータを自在に操るのは魔法に近いことだからです。しかし、問題なのは、実はプログラマが同士の質問をすることも珍しくない、ということです。たとえば、設計に関して「私は在庫管理システムを作っているのですが、楽観的ロックを使った方がいいでしょうか?」というような質問をする人は多いのです。皮肉なことに、こういう場合、質問をする側の方が、質問される側よりも、質問されたことがらについてよく知っていることが多いのです。おそらく質問した側は、問題となっている状況についても、システムの要件についてもよく知っています。現状取り得る戦略にどのようなものがあって、それぞれにどんな利点と難点があるかといったことについても、その気になれば資料で調べることができます。にもかかわらず、まったくそういう情報や資料を持たない人に対して質問をし、まともな答えが返ってくることを期待してしまうのです。
何も情報を与えられなくても、あらゆる質問に答え、あらゆる問題を解決できる。そんな人はいません。ソフトウェア業界にそんな「超人」がいるという神話は、そろそろ一掃すべきでしょう。どれほど優れたプログラマも人間であることには違いはないのです。彼らも他の人と同じように、論理的に考え、体系的に分析をしない限り、どんな問題も解決できないのです。経験を積んでいる分、勘がはたらくため、普通の人より早く正解にたどり付けることはありますが、基本的には他の人と同じです。どれほど素晴らしいプログラマであっても、はじめから十分な知識と技術を持っていたわけではありません。最初はごく普通の人だったはずです。今は超人に見えるかもしれませんが、それは長い時間をかけて学び、自分を磨いてきたからです。賢い人が長い間、強い好奇心を持ち続けた結果、超人に見えるようになったと言っていいでしょう。
確かに、生まれつき持っている才能に個人差はあります。世の中にいるハッカーの多くは、元々凡人より賢く知識豊富で、仕事をやり遂げる能力も高い人です。それでも「この世のどこかに超人がいる」という神話はそろそろ打ち壊すべさでしょう。超人はいないと思うようになれば、皆の行動は必ず良い方向に変わります。たとえば、共に仕事をしている人が自分よりはるかに賢いとわかっている時でも「何も言わなくてもわかってくれる」とは考えなくなります。手間をかけてでも現状についての情報を十分に集め、その人に伝えるはずです。情報が十分に与えられれば、彼らは持てる能力を存分に発揮できます。今、何が障害になって物事が進まないのか、それが常に具体的に明確に示されるようになるわけです。問題が何なのかを具体的に示すこともなく、ただ超人が魔法を駆使して解決してくれるのを待つ、ということはなくなるのです。これは、問題解決の過程がだれからも見えるということでもあります。
ソフトウェア業界には「超人の神話」を意図的に広めている人たちもいます。彼らは確かに頭の良い人たちなのですが、業界の発展にとっては大きな障害でしょう。神話を広めるのは、自尊心を満足させるため、あるいは顧客や雇用主から見た自らの価値を高めるための戦略かもしれません。しかしこの態度は、皮肉にも彼ら自身の価値を下げてしまいます。ソフトウェア産業、そして同僚たちの成長にとってはマイナスになるからです。超人は必要ありません。必要なのはエキスパートです。積極的に自分以外にもエキスパートを育てようとする意志を持ったエキスパートです。そういう人がいてくれれば、凡人が力をつけ、活躍できる可能性が生まれるでしょう。