【91】良いプログラマになるには
良いプログラマは良いコードを書き、良くないプログラマは……そうでないコードを書く、そんなことは何もシャーロック・ホームズでなくてもわかることでしょう。良くないプログラマの書くコードはまるで怪物のようです。周囲の人間は、その修正のためにあとで大変な苦労をさせられます。読者はみな当然、良いコードを書きたい、良いプログラマでありたい、と望んでいるでしょう。
良いコードは何の根拠もなく勝手に生まれたりはしません。今週はたまたま星回りが良いから良いコードができた、などということはないのです。コードを良くするには、そうすべく相当な努力をしなくてはなりません。良いコードを書きたいと心の底から願い、努力をした人だけが本当に良いコードを書けるのです。
ただ技術が優れているというだけでは良いコードは書けません。素晴らしいアルゴリズムを考え出せる知性を持ち、プログラミング言語についての知識も十分なプログラマが、実にひどいコードを書くというのは珍しくありません。そういう人が、読むのも使うのも大変、修正するのも大変、というコードを書いてしまうことはあるのです。反対に、能力は平凡でも、シンプルなコードを書こうと細心の注意を払った結果、美しく、わかりやすいコードができあがったという例を私はたくさん見てきました。読むのも使うのも楽しくなるようなコードです。
ソフトウェア会社で長年働いた経験から、1 つわかったことがあります。それは、良いプログラマとそうでないプログラマの違いです。両者の最大の違いは「取り組む姿勢」にあります。良いプログラマの姿勢は、プロフェッショナルという言葉にふさわしいものです。常に、最大限の力を尽くして良いコードを書こうとします。リソースの制約のある中、早く作業を終わらせろと会社が圧力をかけてくる中、それでもできる限り良いコードを書こうと努力をするのです。
「地獄への道には善意が敷き詰められている」という言葉があります。それと同じように、「地獄行きのコード」に善意が敷き詰められていることもよくあります。良いプログラマになるためには、単なる善意だけでは不十分です。自分が善意でしていることが本当に功を奏しているか、よく確認することが大切なのです。常に事実、現実を直視し、その上で物を考えるような姿勢が必要でしょう。真に優れたコードは、知識も経験もあるプログラマが最大限心を配って書いた時に生まれるものです。深く考えもせず、ぞんざいに書いたコード、自称「達人」が自分勝手な方法で書いた独りよがりなコードが良いものになるわけがありません。
良いコードが書きたいのなら、良いプログラマになりたいのなら、常に次のことを心がける必要があるでしょう。
- どんな場合でも、「とりあえず動きそう」というだけのコードは決して書かない。誰が見ても間違いなく正しいとわかる、美しいコードを書くよう常に心がける(コードの正しさを確実に証明できるテストも書く)。
- わかりやすいコード(どういうコードなのか、何をするコードなのか、他人が見てすぐにわかるコード)、保守しやすいコード(自分自身や、他のプログラマが、将来、簡単に修正を加えることができるコード)、正しいコード(単に見かけ上、動くだけでなく、問題を間違いなく解決できるコード)を書く。本当に正しいと言えるかどうかはあらゆる手段を使って確認する。
- 他のプログラマと協調する。プログラマは孤立した存在ではなし、1 人だけで仕事をするプログラマはほとんどいない。大半の仕事はチームで進められる。企業での開発プロジェクトの場合も、オープンソースプロジェクトの場合もあるが、いずれにしてもチームでの仕事であることに変わりはない。常に他のプログラマの存在を意識し、他人が読みやすいコードを書くよう心がける。自分の優秀さを見せつけることでなく、チーム全体の成果を最良にすることを考える。
- 自分が扱ったコードは、必ず、自分が最初に見た時よりも少しでも良いコードにする(構造をより良いものに変える、改めてテストをする、わかりやすく修正するなど)。
- 絶えず積極的に新しい言語、イディオム、テクニックを学ぶ。ただし、学んだことをむやみには使わない。適切と判断した場合にのみ使う。
ここに書いてあることに興味を持ち、最後まで読んだ人はおそらく、プログラミングが好きで、良いプログラマになりたいという熱意を持った人でしょう。是非これからもプログラミングを楽しんで欲しいと思います。難しい問題を見事解決できるプログラム、自ら誇りに思えるプログラムを書きましょう。