攻めと守りのプログラミング
読者の皆様、いつも読んでいただいてありがとうございます!
私は学生時代、情報系の学科にてガリガリとプログラムを書いていた。
入社して数年経つと、SEとしてのプログラミングと研究者としてのプログラミングの違いが相当鮮明になります。
まず、研究者のプログラミングは、例えるならば攻めのプログラミング。
論文に掲載するプログラムは例外処理なんて1個もなくてOK。なんちゃって実装でスパゲッティでもOK。
とにかく斬新なアイディアが実現できているものであれば良い。
つまり、デモ用の画面やデータ採取のための必要最低限だけできてれば良いのです。
しかし、SEとしてのプログラミングは、守りのプログラミング。
例外処理が命であって、テストに非常に膨大な時間を使います。
以前、某テストツールのセミナーに出た際に「、ある程度の規模のプロジェクトでは全工程の半分以上をテストに使います。」と言われそんなバカなと思いましたが、実際に大規模プロジェクトなんかだと余裕で半分以上の工程をテストに使います。
また、故にテストをいかにスムーズに乗り切るかがプロジェクトの鍵のために、要求定義の段階からテストの計画についても常に考えながら設計を進めていきます。
大規模な業務システムでなくとも、ちょっとした運用のためのツールを作成してお客様に使って頂くときも、結構頑張ってスタブを書くようになりました。期間が限られている場合、多少ユーザビリティや付加機能を制限してもテストに時間をかけます。
なぜなら、高機能で使いやすいツールを提供したときの得点よりも、期待通りに動かなかったときの失点の方が圧倒的に大きいからです。
どっちが良いか悪いかということではないのですが、最近改めて実感します。