システムをリリースするまでの過程では、作ること以外の方が大変なことが多いもの
システムの開発というものは、企画・構想から設計・プログラミングを経て世の中にリリースされるわけですが、
楽しさ
企画・構想 > 設計 > プログラミング
という感じでしょう。労力は逆でしょうか。
さて、実際はその先に「テスト」があります。テストをせずにリリースできる人はかなりの腕前、あるいは度胸で、私は結構、コンパイルが通ったらリリース、ということをしてきましたが、基本的に緊急事態だったから、あるいは、テスト環境がないから、ということがほとんどで、さすがに何でもかんでもテストなしで完璧に動かす自信はありません。。
そうなると、楽しさは、
企画・構想 > 設計 > プログラミング > テスト
という感じになり、労力は逆になるでしょう。
さて、システムと言ってもいろいろなものがあり、特定の動作を続けるものであれば総当たりでテストすることも可能ですが、インターネットでのシステムのように、不特定多数の端末からアクセスがあるような場合、そもそも総当たりテストは現実的に無理になります。そこで、実環境でのテストを行うしかなくなるわけです。
当社であれば、とりあえずIT関連メンバーのネットワークセグメントに設置してみて、安定稼働を続けられるかどうか、あたりから始めますが、実はこの段階で結構問題はたくさん見つけられます。IT関連メンバーは使っている端末も多く、種類も多いですし、やることも様々で、良いテストになるわけです。
そんなとき、つまり、テストをさせてもらうときに気をつけておくことは、「何かあったら、どう対処すれば良いかを伝えておくこと」でしょう。技術者は盲目的になりがちで、ついつい「技術的な向上」「機能追加」などに気を配りがちになり、「ユーザへの気配り」が欠けてしまいがちです。しかし、テストですから、どうしても問題は発生してしまうもので、その時にドタバタしていると「そんなもの使えないから駄目だ!」と言われてしまうのです。ちょっとした気配りができるかどうかが実はとても大切なことなのです。
さて、システム開発が製品開発ですと、テストを終えて、その後リリースと言うより販売というステップに進みますが、実は作ることより売ることの方がはるかに難しいということを、なかなか技術者はわかっていないものです。私も若い頃は、良いものを作れば勝手に売れるものだと信じていました。しかし、世の中そんなに甘くないのです。良いか悪いかより、別の次元で売れるかどうかが決まることが多いのです。まあ、その話はまた今度。。
いずれにしても、システムが高度になるにつれ、テストも困難になっていきます。私が関係している分野で言えば、インターネットの基幹部分で使われるようなシステムのテストは実に難しいのです。数万人あるいはそれ以上のユーザの通信が通過し続けるような状態を、シミュレータでテストすることはまず無理です。数千万円する高価な負荷テストツールもありますが、それでも実環境には足下にも及ばないでしょう。スループットだけならかなり負荷をかけられるものも存在しますが、実環境の多様性はとても再現できません。そうなると、ある程度シミュレータなどでテストをした後は、実環境でテストをするしかなくなります。
ところが、実環境でテストをすることなどまず許すところはありませんから、結局「評価」という名目で置かせてもらうことがほとんどです。万全を期したつもりでも、実環境では想像すらできなかった現象が出たりするものです。それでちょっとした障害が大騒ぎになり、評価打ち切りになるということはよくあります。
個人的には、障害は確かに良くないと思うものの、多少の失敗やリトライを慣用できる世の中でないと、失敗を恐れてそういうチャレンジをする人がいなくなってしまうと思っています。なんとなく、日本人は細かいことにうるさいので、クレームも多く、結局それが陰で影響して、日本発のチャレンジングなシステムがなかなか登場しないのでは?と思うほどです。それで、結局海外でいろいろ実績のあるものを日本に輸入する、という流れにいくのではと・・・。まあ、あくまでも開発側の立場の戯言ということですが・・・。
いずれにしても、システムを世の中に出すためには、作ること自体よりも、はるかにテストをすることが大変で、さらに売ることはもっと大変、ということを技術者も理解しておくことは大切だと思います。とはいえ、実は大変なことほどやり甲斐があるので、だんだん作ること自体より売ることの方が面白く感じてきたりすることもあります。いずれにしても、どの過程も理解し、経験していくとビジネス全体がどんどん面白くなることは間違いないと私は考えています。