ITシステムのトラブルシューティングは医者の診断と似ている

これはテクニカルサポートの仕事に従事して以来20年ほど思っていることだ。

もちろん違うところはたくさんある。一番の違いは扱っている事象の重さだ。医者が診断を誤ったり手術でミスをすれば人命が失われるのに対し、ITシステムの障害は、たとえ障害対応の手順を間違ったとしても完全に動かなくなってリカバリーが効かなくなるということはまれで、多少のダメージは伴うかもしれないけれど多くの場合何らかの復旧策を取ることはできる。

しかし問題を解決するアプローチという部分においては非常に似通っている。

医者が患者を診察し治療を進めていくにはおおよそ以下のようなステップを踏むことになると考えられる。

1. 問診 -- 患者と会話をし、どのような症状が出ているのかや症状、が出るまでの経緯についての情報を把握する。
2. 検査 -- 患者の申告内容の裏付けとして、医学的な方法を用いて状況の確認を行う。
3. 原因の推測 -- 集めた情報と、これまでの経験や知識を総合的に利用し、どの病気であるか、そしてその病気を引き起こしている原因が何かの分析を行う。
4. 治療 -- 原因を取り除くための方法の提案。投薬、手術、あるいは何もせず経過を観察するということもある。
5. 検証 -- 治療の推移を見守り、診断結果や治療方法に効果があったのかを確認する。病気によっては完治したという証明も必要になるだろう。

一般市民の立場からすると、医者の腕というのは「原因の推測」をいかに的確にしてくれるかにかかっていると思いがちだけれど、それと同じくらいあるいはそれ以上に重要なのは「問診」のステップだろう。医者は決して魔法使いではないし、ただ見ただけで原因をすぐさま特定できることなんて稀である。大事なのは医者が患者の抱えている問題をいかに正確に把握するかということだ。入り口を間違えれば治療の方針は大きく変わる。もちろん医者は外部から観測可能ないろいろな情報 (触診、X線写真、血液検査等)を用いて患者が気づいていなかった症状を発見することもあるだろう。しかし、数値はあくまで数値だし、そこから得られる結論は無数にあるかもしれない。医者にできる限り正確かつ有用な情報を与えることが自分の病気の回復に対して重要な要素な占めているし、それは自分が病院にかかった経験からもわかることだ。その点において、コミュニケーション力というのは医者のスキルにおいて欠かせないものであると言える。

ITシステムのトラブルシューティングでもまさに同じようなことが言える。

一見するとITシステムの場合は人間が作ったものであるし、人体と比べて問題の原因特定は容易であると考える人もいるだろう。しかし現実は決してそうではない。むしろ人間が作ったものであるがゆえに、人間と人間のコミュニケーションが非常に大事であるとすら言える。

ITシステムを作った人は、少なくとも自分が担当した範囲については、それがどういう意図で作られたのかはある程度理解しているはずである。しかし人間はミスを犯す生き物であるから、システムが意図したとおり動かないということは非常によくある。「こう動いているんだからこういう意図で作られているはず」という先入観を持ってしまうと、本質を見誤ることになり原因の特定から遠のくから、人間の意図を理解するということは非常に大切である。そしてもう1つ、ITシステムというのは多数の人間の協働によって作られるものであり、すべての関係者が共通の認識を持つことは不可能である。関わった人の間の認識の齟齬が大きければ大きいほど問題の発生頻度は高くなるし、なにか起こったときの影響度は大きくなる。

私はベンダーの立場からサポートエンジニアとしてトラブルシューティングをすることが多いけれど、ここでもやはりコミュニケーションは重要になる。ユーザからの問い合わせにおいては、調査に必要となる情報がはじめから揃っているということはまずない。ユーザはユーザ側の先入観もあるし、「これはわかって当然」という思い込みで説明を端折るケースが多い。こちらからするとユーザ側の意図やそこに行き着くまでの経緯はブラックボックスであるから、いろいろと「問診」をして状況の正確な把握をしようと試みるが、不具合が発生しているユーザからは「なんでそんなことも説明しないとわからないのだ」と言われることも多い。しかしこのステップで正確な情報が得られないと、いくらエラーメッセージや監視データだけを見ていても原因にたどり着くことは難しい。

もちろん中にはスーパーエンジニアみたいな人もいて、1を伝えるだけで10まで理解してしまうような人もいる。それは経験や知識が豊富にあるからなし得る技でもあるのだろうけど、すべてのサポートエンジニアにそれを期待するのは現実的ではない。言うならば、町医者に診察を受けに行ってブラックジャックが出てくることを期待しているようなものである。もっというと、そんな人であっても毎度毎度スーパープレイを決めているというわけではもちろんないし、ブラックジャックだって患者や患者をよく知る人に適切な質問を投げることで治療方針を定めることもある。

サポートエンジニアに求められているのはITシステムの問題解決であるから、直接の問題解決である「原因の推測」のスキルが重要なのはもちろん言うまでもない。しかしユーザに的確な質問を投げ、自分の意図する情報をうまく引き出す能力というのも車の両輪として必要なスキルだから、医者と同様「問診」をスムーズに進めるスキルというのは非常に重要だと言える。

今回は長くなってしまって「問診」の部分の類似性しか取り上げられなかったけど、次は(もし書く気が起これば)「原因の推測」の段階における類似性や相違点についても書いてみるつもり。

この記事が気に入ったらサポートをしてみませんか?