プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

理論武装をしよう


ソフトウェア技術者にとって大切なことは、相手に分かりやすく説明する力です。技術者は相手の話を正しく理解し、それにたいして分かりやすく説明しなくてはなりません。そのためにはソフトウェアに関して多くの情報を持ち、何が正しいかを正しく判断できるようになる必要があります。

はじめてのBillGレビュー


Joel on Softwareの翻訳版より:


はじめてのBillGレビューのこと


Joel on Softwareの日本語版は以前読んだことがありますが、現在でも翻訳作業が行われているのですね。ボランティアのようですが、Joel SpolskyさんのBlogが日本語で読めることに感謝したいと思います。さっそくRSSリーダに登録しようかな。


さて、上記記事はタイトルから分かるようにJoelさんが初めてBill Gatesさんにソフトウェア仕様のレビューを受けた時の話です。私は特に以下の部分が印象に残りました。

「ビルは君の仕様を本当にレビューしたかったわけじゃなくて、君がしっかりコントロールできているか確かめたかったんだよ。彼のやり方は、相手が分からないと認めるところまでどんどん質問を難しくしていって、そうして準備ができてないじゃないかと怒鳴りつけるんだ。


この逸話はソフトウェア開発者にとって最も重要なことは何かということを示していると思います。

理論武装をすること


ソフトウェア開発者であれば誰もが自分の作成したソフトウェアのデザインを人に説明したことがあるはずです。なぜこれはこういう仕様になっているのか。性能はどうか。変更することのデメリットは何か、等々。時には自分のデザインを守るために考えを主張したり、完全に納得するわけじゃなくても、仕様を変更せざるを得ない場合もあるでしょう。


その時に大切なことは、ソフトウェア及び関連技術への深い理解です。自分が作成したソフトウェアについて理解することはもちろん、それに関連したソフトウェアや動作環境などについても情報を収集しておかなければなりません。よく「これは他社のアレと比べてどうなの?」と聞かれたりしますよね。


こうしたいわゆる「理論武装」をすることは、自分の主張をつらぬくための武器だけでなく、物事を正しく判断するための道具ともなります。多くの知識があれば、何がベストの選択か判断するのにも、おおいに役立つことでしょう。ただ単に自分の意見ばかりを主張していると、そのうち信頼されなくなってしまいますが。


もしも自分がプログラマではなかったとしても、情報収集は大事です。「自分はコードを読めないから」と逃げるのではなく、分からないことはどんどんプログラマに確認しましょう。プログラマはそれをコードが読めない人に対しても分かるように説明しなければなりません。「コードを読めない人には説明できない」というのはプログラマの逃げです。そんなことは絶対ありませんから、納得するまでどんどん聞きましょう。

技術者にとって大切なこと


ソフトウェア技術者にとって大切なことは、相手に分かりやすく説明する力です。


以前プログラマに必要なことはコミュニケーション能力であるという話をしました。相手の話を正しく理解し、それにたいして分かりやすく説明しなくてはなりません。これがうまく行かないと、自分の意図が正しく相手に伝わらないだけでなく、信頼関係も得ることが出来ないでしょう。


先の記事において、Bill Gatesは相手が信頼するに足りる人かどうかを見極めているのだと思いました。信頼できる人とは、ソフトウェアに関して多くの情報を持ち、何が正しいかを正しく判断できる人。その場をうまくとりつくろったとしても、ウソはいつかばれるものです(たぶんBillはそんなウソをすぐに見抜いてしまうでしょう)その場で答えられない場合は、後で調べて正しい結果を伝えた方が信頼されるはずです。


これらは私が言うまでもなく、多くの方が実践されていることと思います。私は説明も冗長で下手くそです。自分の作ったソフトウェアの情報も十分とは言えません。これを教訓として、人に信頼される技術者になる努力はこれからも続けていきたいと思います。