プロのプログラマとアマチュアの違い

私の感想

十年とシステムエンジニアプログラマを仕事としてやってきた立場から述べたいと思います。 私の感想であり、普遍的なものではありません。

そもそも数日でプログラムを作る人がいるよね

ネットサーフィン(死語?)をしていると「このプログラムは3日で作りました!」とかいう人いますよね。反対に、3ヶ月、6ヶ月スパンでソフトウェアをつくる企業もいます。この違いは能力でしょうか? 例えば、マイクロソフトは数年もかけてWindowsのバージョンアップ版を発表しますが、あれはマイクロソフトの技術者が遅いせいでしょうか?

それは違うと断言します。

開発に時間がかかるのはなぜか

私が思うに以下のような理由です。

  • 異常系(エラー処理)を厳密に実装するため アマチュアは「正常」と「エラー」の2つの分岐処理を書いて満足しますが、プロは違います。運用でエラーが起きたときに解析ができるように「正常」「エラー1発生時」「エラー2発生時」「例外1発生時」「例外2発生時」・・・のようにエラー処理を多数分岐させて書きます。「仮にこの処理の途中でHDDが故障したら・・・」みたいなこともシステムによっては検討し、実装することもあります。

  • バグを潰すために各工程で検証期間を設けているため  プログラマはバグを潰すために、複数人で設計書やプログラムコードをレビューします。また、試験項目もレビューします。これが各工程で数日要します。

  • あとの人がメンテナンスをしやすいようにコーディングしようとするため  どの処理を関数にしたらわかりやすいか、コメントを入れるべきか、無駄がないか、などを考えてコーディングします。  全ては「運用で問題になったときに解析時間を減らすため、直しやすくするため、バグになりにくくするため、誰でもメンテナンスができるようにしたいため」です。お客様のためでもありますが、自分のためでもあるんです。  アマチュアももちろん考えながら実装していると思いますが、プロは考えるだけで1行も書かない日もありますよ。

結局何を言いたいか

天才プログラマーが世の中にいますよね。見てるとすごい速さでプログラムを作り上げます。 それはそれですごいと思います。しかし、企業では天才プログラマをたくさん雇うことはできません。 チームとしてシステムを開発しなければならないし、開発したシステムは5年10年と保守していかなければなりません。一人だけ天才がいても立ち行かないのです。

これからプロを目指す人、今、仕事に従事している人はあとからメンテナンスしやすいことを考えたコードが書けるよう心がけてください。自ずと周りから重宝されるプログラマ・SEになれると私は思います。