まずは動かす

 IPv6の第一人者である萩野様に来社していただき、前回はIPv6プログラミング講義をしていただいたのですが、昨日は第2回として、OpenBSDのセキュリティ対策技術に関する講義をしていただきました。ネットワークに関する部分と、仮想記憶に関する内容で、非常に興味深い内容でした。以下のスライドを元に萩野様がわかりやすく説明する感じで、今回はソフト開発担当メンバーが全員参加でき、勉強になったことでしょう。

http://www.openbsd.org/papers/auug2006/network_randomness/

http://www.openbsd.org/papers/ven05-deraadt/

 さらに、萩野様の友人で、NetBSDの開発者であり、組み込み・ドライバ開発に非常に強い福原様、NetBSD搭載ロボットの開発をされている野沢様にも参加していただき、雑談、さらにお食事会でとても有意義な会話ができ、それぞれの分野で活躍されている一流の方々と直にコミュニケーションできたメンバー達にはとても良い刺激になったことでしょう。

 さらに私が毎回著書でお世話になっている秀和システムの山内様も途中参加いただき、いつかは著書を、と考えているメンバーを紹介できました。

「まずは動かす」

 さて、プログラマーにはいろいろなタイプの人がいまが、仕事としてプログラミングを行う場合に重要なのが、「まずは動かす」ということです。依頼されたプログラムの規模にもよりますが、まずは基本動作を作り上げることが何よりも大切です。

 たとえば、HTTPサーバを作って欲しい、と依頼された場合、真っ先に作らなければならないのは、HTTPリクエストを受け付け、指定されたパスに応じたファイルのデータを応答する機能です。次にCGI実行機能、それから、パラメータ設定関連や、デーモン化、ログ出力関連、拡張的なHTTP処理という感じでしょう。

 大切なことは、依頼した人をできるだけ早く安心させることです。基本動作ができるようになった状態で動作を確認してもらうことで、依頼したものが勘違いなく進んでいることを把握し、さらに基本機能で確認できるテストができます。他のシステムとの連携が必要な場合も早めに確認ができます。いわゆる「プロトタイプ」レベルのプログラムをどれだけ迅速に作り上げ、確認してもらえるかで、依頼者の信頼感がかなり違ってくるのです。

 ベテランプログラマーは、何が最優先かを見抜く力が優れている人が多く、依頼した際に安心できます。ベテランほどさまざまな仕事にかかわっていることが多く、すばやく目処をつけていく必要があり、そのため自ずと優先順位を考える力が身についているのです。プロのプログラマーとしての経験が少ない人は、ついつい細かい部分にこだわってしまい、本質的な部分ができていないのに、拡張的な部分の深みにはまってしまい、依頼者が心配でしつこく進捗を確認したくなってしまい、それに対応しているとますますプログラミングが進まなくなってしまうという悪循環が発生します。

 もちろん、技術的にできるかどうか非常に心配な点を先に押さえておくのは悪いことではありません。しかし、そういう部分ばかり目処がついてきても、本質的な部分ができていなければ動作確認も何もできません。散々待ってようやくできてきたと思ったら勘違いがあり、望む機能と違う動きであった、という事では目も当てられません。

 昨日は一流の方々からそのような話題でアドバイスしていただき、私も普段からそう言っているのですが、活躍している方々が皆口をそろえてそう言うというのは、メンバーとしてもより心に響いたのではないかと思います。

 もうひとつ面白い話題が、「プログラムはCPUの気持ちになって作ること」と言う事でしたが、これはまた次の機会に紹介してみたいと思います。

 いずれにしても、自ら積極的に一流の方々と交わり、刺激を受け、アドバイスを謙虚に受け止める姿勢がとても大切、と言う事は間違いありません。

2007.6.21

フレームページへ

from 2007/1/13