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