システムの再開発はなかなかゴーがもらえない?
システム関係の仕事をしていて難しい問題のひとつが「再開発」です。再開発をなぜしたくなるかといえば、
・既存のシステムの性能・拡張性・メンテナンス性などに問題がある
・仕様変更・機能拡張を繰り返して、管理しきれない状態
・開発に携わった人がいなくなった
・他人が作ったものは嫌で自分で作りたいから
など、様々な理由があると思いますが、趣味なら「いくらでもお好きにどうぞ」となりますが、仕事となるとそう簡単にゴーとは言えないことも多いのです。
「既存のシステムで課題は明確になっているのだから、再開発すれば良いものができる」というのはもっともらしい感じがしますが、意外な落とし穴があるのです。
・課題を全て解決しようと気負いすぎて、開発がいつまでたっても収束しない
・既存の悪い点を完璧に超えようとしすぎて、凝り過ぎてしまう
・既存のシステムがあるので、期日までになんとかしなければという危機感が薄く、なかなか仕上がらない
・再開発なのだからと最初から完璧を求められ、それに応えられない
実は私も入社3年目頃から当時担当していたCADシステムの完全再開発をはじめたのですが、まさにこれらの問題にはまり、なんでもできるように凝り過ぎて性能がなかなか出なかったり、いつまでたっても完成しないという状態を続けてしまいました。
腕のある人ほどこの落とし穴にはまりやすいものです。自分ならすばらしいものが作れると気負いすぎて、凝りすぎてしまうのです。小粒なシステムならまだしも、ある程度の規模になると、凝りすぎるとそう簡単に収束しなくなります。特に、使っている現場と直接接していない人ほど、現場が何に困っているのかを把握しないまま、自己満足に走りがちで、できあがっても実はあまり現場で歓迎されないものになってしまうことも多い気がします。
趣味のプログラミングと違い、仕事でのプログラミングでは、むしろ凝らない方が良いくらいだと私は考えています。普通にシンプルにコーディングする方が、ソースのメンテナンスもしやすく、他の人も理解でき、早く安定状態にもっていけるものです。仕事のプログラミングでは120%に仕上げる必要はないのです。ちょうど100%で十分で、場合によっては80%でもいいから、早く欲しいということも多いものなのです。
仕事で使うプログラムは、言い訳ができません。何か問題が出た際に「普通はこうでしょ?」と言っても、「普通だろうがなんだろうが、使えないこと自体が問題なのだから駄目」なのです。中身がどれだけハイレベルかどうかではなく、使えるかどうかで判断されます。さらに、何か起きたとしてもすぐに対応できるかどうかが大事なのです。
そんな背景から「再開発したい」と言われても、なかなか簡単に了解できないことは多く、とくに技術的に自信を持った人から言い出されると、なおさら悩むのです。
それでもなんとか再開発したいと思うのであれば、基本的にはある程度動く状態まで自分の時間で作り、それを見せて納得してもらうくらいしか方法はないかもしれません。きちんと動いて、既存のものより問題が少ないことを見せることができれば、駄目と言うはずはありませんから。「そこまでしなければならないのか?」と思うかもしれませんが、それくらい再開発は事業としてリスクが高いのです。逆に言えば、そこまでしてでもなんとかしたいという熱い思いがなければ失敗することが多いとも言えます。
製品として世の中に出すということは、会社として責任を持って提供し、サポートできる状態でなければならないということです。個人的な趣味とはまったく要求が違うものです。再開発したいというのであれば、その言葉に責任を持てるような気持ちが必要ですし、安心して任せられるような背景が必要なのです。
なかなか思うような開発をやらせてもらえない、と感じている人は、このあたりを乗り越えられるかどうかを考えてみると良いかもしれません。