異常処理系の設計、プログラミング、テストの大切さ
使用者が楽をするために望んだ機能をシステム開発し、実現させるのがITエンジニアだけど
システム開発はそのシステムの利用者が、手作業を減らして「楽をして」「間違いがなく」「素早い処理」が求められている。私はそのようにシステム開発を捉えていますが、ITエンジニアとしては他にも考えなければならないことがあります。それが「システムが正常に動かなくなった時」の事です。
仕様通り作るのも大事だけど、異常系処理を考慮するのも大事
異常系の処理と一言でいうのは簡単ですが色んなパターンがあります。
・プログラムのバグにより問題が発生し、後続処理に問題が発生するパターン
・マスタデータの異常を検出時の対応処理
・前提処理が終わりきらずに、後続処理が開始しないための制御
・外部システムと連携時に外部システム側に問題があった時の制御
・ハードウエアの故障による異常終了後の復帰処理 などなど
そんなモノまで発生することを考慮しないといけないの?と思うこともあれば、そのチェック抜かしても本当に大丈夫?と思えるような設計もあります。またシステム利用者は望んだ機能が動けばよいと思っていますが、私達エンジニア視点では、システムに問題があった時の事をしっかり考えなければなりません。そしてはシステム異常時にいち早く復帰し、元の状態に戻す必要があるためです。
異常系処理はつまらないし、面倒くさいし、テストもやるのが大変
思いっきり主観ですが、正常系処理の設計やプログラミングは楽しいですが、異常系の処理設計、プログラミングが正直面白くないのが本音です。理由としてはどこまでやっていいのか分かりにくいこと、作っても動作しない可能性があること、表に出てこないので達成感もないこと。でもエンジニアとしてはその部分をしっかり設計して、しっかり実装して、システム異常があった場合にいち早くシステムを復帰させることが、エンジニアの真価が問われる部分ではないのかと思っています。
もちろん正常系処理でも難しい仕様は多くあります。業務システムで複雑怪奇な仕様もあるし、新技術、最新技術でも幅広く深い知識と高い実装能力が問われます。ただ、プログラミングができるようになり、設計もできるようになったら、異常系についてもしっかり、顧客と調整し、設計、実装、テストとやっていくことが大事です。これをおろそかにした時ほど、なぜかシステムトラブルが発生して、大反省となります。
顧客は仕様通りの機能を望んでいるけど、トラブった時は早い復旧を何よりも望んでいる
日常生活でもシステムにトラブルがあった場合、長期間停止状態になると迷惑のかかる人が増えていくし、復旧後の確認作業も増えていきます。大規模システム、利用者の多いシステム、社会性の高いシステムに至ってはニュースになり大きな責任問題まで発生します。
顧客は異常系の処理の仕様について言及する人は、そもそもシステム開発に携わった経験のある人だけだと思います。普通の人はそんなものは知ったことではありません。でも問題があった時にはいち早い復旧を望みますよね。正常系の処理と同じぐらい異常系の処理は大事になります。
異常系処理の設計・開発能力は意外と重宝される?
私は新人時代に社会性の高い大規模システムに携わったせいなのか、他の人に比べて異常処理系の設計が得意のようです。そこまで考えなくてもOKと言われることもありますが、問題発生のリスク、回避方法、異常処理系の設計ができることは重宝されます。職務経歴書などのアピールポイントにはなりにくいのが難点です。
履歴書、職務経歴書に記載できるスキルや能力も大事ですが、なかなかアピールしにくい能力を持っていることでも、エンジニア全体としての能力はけっこう評価されていたりしますよ。
------------------------------------------------------------------------------
笑顔表情筋のトレーナーをやっており、朝活やセミナーなどやっています。
申し込みはストアカから。
https://www.street-academy.com/steachers/290870
------------------------------------------------------------------------------
------------------------------------------------------------------------------
コメント
白栁隆司
昔は、DB更新中にコンセントをぶっこ抜く、なんてテストも行っていたことを思い出しました。