最終更新日: 2008-01-26
WEB+DB PRESS Vol. 43 に向けて書いた記事の元の原稿です。
「プログラミングに関する雑多な事柄」がテーマの本連載、最終回の今回はプログラマについて取り上げてみたいと思います。
生産的なプログラマは平均的なプログラマの何倍もの仕事をする、という話をよく耳にします。確かに経験に照らし合わせても、できるプログラマの生産性には目を見張るものがあります。
ここでは私がこれまでに関わった中で、生産的なプログラマにどんな特徴が見られたか紹介したいと思います。
チームでの開発では、他のメンバーから質問があったり、何かを依頼されたときに、できるだけ早くレスポンスすることが大切です。
たとえば、ちょっとした質問への返事が遅いだけで、誰かの進行が止まってしまうことがあります。レスポンスの早いプログラマと一緒に仕事をすると、こうした待ち時間が最小限になります。
私の知り合いのあるプログラマは、何かアイディアを思いつくと、すぐに動いてあっというまに実装してしまいます。普段から仕事をすばやく片付けているため、何か思いついたときにすぐに動ける余裕を持っているようです。
一方で、やることをためこんでいると、何か思いついてもすぐには動けず、やるやると言いながらいつまでも放置するという結果になりがちです。やりたかったことも、時間が経つと苦痛になってくるものです。
プロジェクトやタスクを途中で放り投げずに最後まで終わらせることは一見当たり前のことのように思えますが、さまざまな障害や突発的な別の事柄などが発生すると、いつのまにか後回しになり、ついには立ち消えに (あるいは他の人がやることに)、ということがあります。仕事を終わらせることに執念を持って取り組んでいるプログラマは進行を阻害する要因にまどわされずに完成にこぎつけます。
プログラムはきれいに書くにこしたことはありませんが、瑣末な部分にこだわって時間を浪費するのはいただけません。また、ときにはダーティな問題に対してダーティな方法で対処しないといけないときがあります。
ダーティな方法でとりあえず対処しておくほうがいいのか、コードを大幅に書き換えてきちんと対処したほうがいいのかは場合によって異なります。プラグマティックなプログラマは、手間とメリット、時間的な制約などを勘案して、そのときどきに応じた適切な解決策を導き出します。
やるべきことが複数あるときは重要度の高いものから取り組むのが基本ですが、優先順位を意識しないでいると、手当たり次第にはじめて、効果の薄いところばかりに時間を費やしているということになりがちです。優先順位付けが得意なプログラマは効果の大きいところからズカっとかたづけていきます。
何をどの順番で進めるか、誰にいつ依頼するか、といった段取りは、複数人が関わるプロジェクトではとりわけ重要です。たとえば、別のチームにやってもらう修正の依頼を後回しにしていて、ギリギリになってから頼むと「急に言われても無理」という事態になってしまいます。
やることが無数にあると、つい、先にやるべきことを見落として、このような「おかずが完成してから炊飯器をセット」という事態が発生しがちです。段取り上手なプログラマはプロジェクトの進行を見越して先回りした行動をとっています。
プロジェクトを完了する上では、誰かがやらなければならない泥臭いタスクもあります。私の知る生産的なプログラマの多くはこうした泥臭いタスクに率先して取り組んでいます。
一見つまらなそうなタスクでも、やり方を工夫してすばやく片付けたり、無数にある雑多な作業を集中してブルドーザーのような勢いで一気に片付けたりと、厄介なことをさっさと済ませることに楽しさや挑戦を見出しているようです。
今回は生産的なプログラマについて書きました。技術への理解、問題解決への洞察力、コーディングの力といったプログラマとしての基本的な能力が重要であることは言うまでもありませんが、今回述べたようなその他の能力も生産性を決める大きな要素だと思います。
一年間、6回に渡ってプログラミングに関する事柄ついて書きました。この連載を執筆する上でプログラミングについて改めていろいろ考えましたが、やはりプログラミングは奥が深く、追究しがいのある分野だと再認識しました。本連載が読者の皆様の何かの役に立てれば幸いです。