効率化しすぎると、逆に事故る —— 新人時代の「メモリ増設事件」
エンジニアを長くやっていると、「効率化は正義」だと思いがちになる。
もちろん、それ自体は間違っていない。自動化、標準化、並列化。現場ではどれも重要だ。 ただ、若い頃の私は、その「効率化」の怖さを身をもって学ぶことになった。
まだエンジニアになったばかりの頃、とある会社のPCメモリ増設作業を手伝ったことがある。 週末にサーバ導入を行い、そのタイミングでクライアントPC側もメモリを増設する、という案件だった。
当時の私は、まだソフトウェアエンジニアとしては完全にひよっこ。 コードを書くというより、現場作業や雑用が中心だった。
最初は1台ずつ、丁寧にノートPCのメモリを交換していた。1台ごとに動作確認
その時、私は思いついてしまった。
「これ、先に全部のメモリを外しておけば効率いいじゃん」
1台ずつ開けて、交換して、確認して閉じる。 そんなことをやるより、まず50台以上のノートPCを全部開けて、一気にメモリを交換したほうが早い。
我ながらナイスアイデアだと思った。
……結果。
10台以上が起動しなくなった。
「え?」
完全に青ざめた。
当然、私はハードウェアには詳しくない。 急遽、PCメーカーのサポートに連絡することになった。
幸い、企業向けの大量導入案件だったため、メーカー側もかなり本気で対応してくれた。
そこで判明した原因が、実に現場的だった。
見た目は同じノートPCでも、実は内部構成が微妙に違っていたのだ。
同じ型番系列でも、一部のモデルは事前にBIOS設定変更が必要だったらしい。 つまり、私は「全部同じ機械」だと思い込んでいた。
でも現実は違った。
メーカー側が緊急でマザーボード交換などを行ってくれ、なんとか月曜朝の業務開始までに復旧。 私は当然、始末書を書くことになった。
ただ、この事件で学んだことは大きかった。
「メーカーサポートに金を払う意味」
若い頃は正直、「保守契約って高いだけでは?」と思っていた。
でも、こういう事故が起きた時に、本当に価値が出る。
個人レベルではどうにもならない障害でも、メーカー側には知見と交換部材と対応力がある。 あの時、サポート契約がなかったら完全に詰んでいたと思う。
「1個ずつ確認する」は、非効率ではない
効率化というのは、基本的には良いことだ。
しかし、効率化は「前提条件が完全に同一」である時にしか成立しない。
現場では、その前提が崩れていることが多い。
特にハードウェアやインフラは、「だいたい同じ」が一番危ない。 微妙なロット差、BIOS差異、ファームウェア差異。 見えない違いが平然と存在する。
だから今の私は、逆にこう考えるようになった。
「面倒でも1個ずつ確認する方が、最終的には速い」
事故対応ほど、時間を吹き飛ばすものはない。
若い頃の私は、「効率化して仕事が速い俺」に酔っていたのだと思う。 でも、本当にプロなのは、「事故らない手順」を作れる人だと思う