人生のプチ美学を教えてください!!

私は、Webアプリケーションの開発(主に追加開発)に従事している3年目のシステムエンジニアです。
先日、リリースしたプログラムのバグが原因で顧客のデータベース情報を誤って大量に書き換えてしまいました。それ以来、ミッションクリティカルなWebアプリケーションの開発に絶えず恐怖を感じています。

ここでWebアプリケーションの開発をミッションクリティカルと言っている理由は、稼働中のWebアプリケーションのモジュールの追加・入れ替えやデータベースの更新などで、時として1つのミスが即エンドユーザに計り知れない影響を与えてしまうことがあり、ミスが許されない業務であるからです。

現在、恐怖を絶えず感じながら今の業務を続けることに大変なストレスを感じているためWebアプリケーションの開発をずっと続けるのは困難であると考えています。
そこで、できればWindowsアプリケーション開発の仕事に移行したいと考えています。現在の勤め先ではWebアプリケーションの開発に比べれば数はかなり少ないですが、Windowsアプリケーション開発の仕事(自社製品開発)がありますので、異動希望するつもりです。
Windowsアプリケーション開発の仕事であれば、稼働中のアプリケーションのモジュール入れ替えや顧客データベースの書き換えといった業務がありませんので、上記していたような恐怖からは開放されると考えています。

ここでお聞きしたいのは、業界としてWebアプリケーションの需要が伸び続けており、逆にWindowsアプリケーションの需要が少なくなっているにもかかわらず、Windowsアプリケーションの開発だけで今後システムエンジニアとしてずっとやっていけるのかどうか、です。
障害が大きい場合は、転職も視野に入れて考えております。

参考程度ですが、アプリケーションの開発・保守の経験は2年ほどで、そのうちWindowsアプリケーションの開発(主な技術はC#,XAML)に携わったのは2ヶ月程度です。残りはWebアプリケーションの開発・保守(主な技術はJava,Struts,JSP,Oracle)に携わっていました。

できれば同じような業務に従事している方からのご回答をお待ちしています。厳しい意見でもけっこうですので、よろしくお願いいたします。

A 回答 (5件)

元アプリケーション開発者です。


Webアプリケーションに関してはあまり詳しくないです。

ローカルアプリケーションでもエンドユーザーがいれば、リリースのたびに不具合が出ないか心配になりますし、致命的な不具合を作りこんでしまったら、それこそ寝ずに修正したりしました。(本来なら検証で発見されるべきですが・・・)

ただし、次善の策としてソースのロールバックや機能の冗長性を持たせることによってリスク分散などはしていました。

Webアプリケーションの場合はヒューマンエラーを抑止または補う手続きというものは無いのでしょうか?
簡単な人為的ミスが即致命傷になるというのは、構造的な問題があるような気がしますが・・・
少なくとも何か問題があった場合にすぐに元通りにできるようにしておくのは基本のような気がします。
顧客データベースなどは何重にもバックアップをとっても良いかと思います。

問題は下流工程にいくほど改修にコストがかかります。
問題の早期発見のためにかけるコストは全体から見れば安上がりになります。

設計段階でのレビューはやっていますか?
ソースのレビューはやっていますか?
リリース前のテストはきちんとやっていますか?
アップデートの手順は明文化されていますか?
不具合が出たときの復旧手順は明文化されていますか?

今のままの気持ちでアプリケーション開発に転向しても、同じような悩みが出てくると思います。
まずは、普段の業務で改善できることを提案し、実践することが大事でしょう。

最後に、Windowsアプリケーションの開発で定年までやっていけるかどうかは誰にもわからないでしょう。
定年まで30数年あると思いますが、いまから30年前はPCなど普及していませんでした。
これから30年後どうなるかは誰にも予想がつかないと思います。
Windowsが存在していない可能性もあります。
それに、ベテランになれば、プロジェクトマネジメントの能力も要求されます。
10年もすればソースコードを見ることすら無いかもしれません。

この仕事で大切なのは、新しいものを常に勉強していく姿勢です。
私は勉強のためであればどんなに高い書籍も自腹で購入しています。
たとえ食費や衣類、遊びに使うお金を切り詰めてでも知識を選びます。
常に新しい知識を勉強し続けていれば、世の中がどう変わってもついていけるでしょう。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
ご指摘のとおりアプリケーションの開発をWebからWindowsに移しても問題の解決にならないのだと理解できました。
また、今回は大きな失敗となってしまいましたが、どのような失敗であっても「原因分析→対策の検討→対策の実践→効果の確認」のサイクルを回して同じ失敗を繰り返さないことが大切なのだと気づきました。
長文での回答、ありがとうございます。

お礼日時:2009/05/10 00:04

>先日、リリースしたプログラムのバグが原因で顧客のデータベース情報を誤って大量に書き換えてしまいました。

それ以来、ミッションクリティカルなWebアプリケーションの開発に絶えず恐怖を感じています。
そもそもデバッグ/テストそのものに問題があったのではないですか?

>稼働中のWebアプリケーションのモジュールの追加・入れ替えやデータベースの更新などで、
データベースのバックアップは万全だったのですか?

なんか質問者の質問内容見る限りバグは仕方ないにしても
バグに対するリスクを軽減するための処置が不十分に思えるだけです。
そのままWinアプリの開発系に言ったところで同じ事の繰り返しですね。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
冷静に問題の分析をし、どのような対策が必要であったのかを考えたいと思います。ありがとうございます。

お礼日時:2009/05/09 23:54

どんなシステムにもバグはつきものですが(開発規模に比例)、


一度の大きなミスを経験しただけで、その後の開発に後ろ向きになるというのは、
そもそもSEというか、この業界に向いていないのではないでしょうか?
実際バグがあっても、その後の経験に生かす事の方が重要ではないでしょうか?

バグを見落としたという事は、単体なり総合なりのテスト工程が不十分であったという事で(項目漏れかチェック漏れか判りませんが)、
それなら、今回のようなバグの見落としが起きないように対策を考えるべきで、
それはwebアプリケーションだから、というよりシステム開発全てに共通するものです、

開発分野を変えれば済むという問題だとは思えません、
「結果には原因が有り、その原因に対する対策を十分に行い、次に生かす」
そう思って自分は開発を行っています、
厳しいようですが、思った事を素直に書かせていただきました。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
SEとして、というよりは人生の中でまだ大きなミスを経験したことがなかったのでその分ショックが大きかったのだと考えています。
今回の問題の原因を冷静に分析しようと思います。ありがとうございました。

お礼日時:2009/05/09 23:47

同じようなWebの仕事は、現在はやっていませんので、あまり参考にならないかもしれません。



>>私にとってはWebアプリケーション開発のリスクを考えるだけでも不安感から夜寝れなくなったり、ストレスで吐いてしまったりします。

もし、Webアプリでそうなるなら、Windowsアプリでもバグが発生したら同様な心理状態になるのではないでしょうか?結局は「バグがあるのは当たり前」という「開き直り」が必要だと思います。

ただし、通常のプログラム変更などを行った後のテストを、「通常必要と思えるテスト項目を全て実施するのは面倒で、準備も大変だからやらないでおこう」という「手抜き」はやっていないことが条件ですけどね。

そういう必要な作業を全部やっていたけど、「想定外のできごとが原因でトラブルが発生した!」あるいは「自分としては十二分にやったけど、実力不足で、このバグは防ぐことができなかった」と思えたなら、顧客に謝ることになるでしょうが、心を落ち着けて、ルーチンワークのように問題点を冷静に解決するしかないと思います。なにか犯罪行為をやったように、落ち込む必要はないと思いますよ。
慌てて対応すると、かえって傷が拡大することがありますからね。

ゼロ戦だって、開発途上において、テストパイロットが墜落で死んでいますし、ジェット旅客機だって、開発当初は、2機も墜落して、多数の人命が犠牲になりました。そういう犠牲の元に世の中は進歩しています。

バグは無いほうがいいですが、どうしてもプログラム開発は新しいことを行うわけですし、そのためどうしてもバグが含まれてしまいます。そういう類の仕事だと思われたほうがいいのではと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
確かにWindowsアプリでもバグが発生したら同様な心理状態になる可能性があります。Windowsアプリの開発経験はありますが、今回のような問題を引き起こした経験はないためです。
もう一度、今回の問題は何が原因であったのかを冷静に分析したいと思います。ありがとうございました。

お礼日時:2009/05/09 23:39

> 時として1つのミスが即エンドユーザに計り知れない影響を与えてしまうことがあり、ミスが許されない業務であるからです。



そうはいっても、Webアプリケーションによって直接発生する被害は限度が知れています。人命が失われたり、ライフラインが停まったり、戦争になったりすることはそうそうないでしょう。ほとんどの場合、たとえ高額だったとしても、お金の問題で済むのではないでしょうか?

そう考えれば、Webアプリケーションの開発は比較的気楽だと思うのですが...。それとも、私が知らないだけで、本当の意味でミッションクリティカルな仕事を行っていたのでしょうか?
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
私が意味していたWebアプリケーション開発でのミッションクリティカルの理由とは、オンラインサービスの停止や顧客情報の誤情報更新、また、それに伴うエンドユーザへの影響が発生するリスクを指しています。
ですので、人命が失われたりライフラインが停まったり、戦争になるようなことはありません。
そういったリスクのある業務に比べ、Webアプリケーション開発の業務が気楽と言えるかもしれません。しかし、私にとってはWebアプリケーション開発のリスクを考えるだけでも不安感から夜寝れなくなったり、ストレスで吐いてしまったりします。

お礼日時:2009/05/09 22:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!