「後戻りできない」という哲学 —— ハードウェアエンジニアと仕事をして思ったこと
最近、久しぶりにハードウェア寄りの人たちと話をする機会があった。
普段私はWebシステムやクラウド周りの仕事が多いので、どうしても頭の中がソフトウェア寄りになる。
バグがあったら直せばいい。 設計が悪かったらリファクタリングすればいい。 最悪、本番リリース後に修正してもいい。
もちろん実際にはそんなに気楽な話ではないのだが、それでも我々ソフトウェアエンジニアは「後から変えられる世界」に生きている。
ところがハードウェアの人たちは違う。
「焼ける」という現実
大学時代、実験で回路を組んでいた頃のことを思い出す。
ソフトウェアなら暴走してもせいぜいプロセスが落ちる程度だが、回路は違う。
間違えると煙が出る。
本当に出る。
教科書の比喩ではない。
抵抗が熱くなり、コンデンサが膨らみ、最悪の場合は部品が死ぬ。
今思えば、あの頃に「間違えると物理的に壊れる」という感覚を叩き込まれたのは貴重だった。
クラウドの世界ではサーバを消して作り直せば終わる。
しかし基板はそうはいかない。
なぜハード屋さんは慎重なのか
ハードウェアエンジニアと話していると、とにかく慎重だ。
インターフェースの定義。 信号線の本数。 電源容量。 タイミング。
こちらから見ると、
「それって、あとで決めれないんですか?」
と言いたくなる場面がある。
だが彼らからすると後では変えられない。
部品を発注し、基板を起こし、実装し、評価する。
もちろん最初にパイロット版で十分にテストをするのだが もし後工程で設計ミスが見つかれば数週間から数か月が吹き飛ぶ。
ソフトウェアでいうなら、
「mainブランチにマージしたら二度と修正できません」
と言われているようなものだ。
慎重になるのも当然である。
温度差という名の文化衝突
面白いのは、ハードとソフトで同じ言葉を使っていても意味が違うことだ。
ソフトウェア側が言う
「APIを確定しましょう」
は、
「まあ後で変更できますけどね」
という意味を含んでいることが多い。
一方でハードウェア側が言う
「インターフェースを確定しましょう」
は、
「ここで判を押したら後戻りできません」
に近い。
同じ日本語なのに温度差が10倍くらいある。
だから会議で衝突する。
ソフト側は柔軟性の話をしている。
ハード側は物理法則の話をしている。
議論が噛み合うはずがない。
後戻りできない世界への敬意
何回か彼らと一緒に働く機会を得て、今ではハードウェアの人たちと話すときは少し意識を変えるようにしている。
彼らは保守的なのではない。
慎重なのでもない。
単に物理法則と戦っているだけだ。
ソフトウェアエンジニアは論理を書き換えられる。
ハードウェアエンジニアは現実を書き換えなければならない。
難易度が違う。
おわりに
もっとも、ソフトウェアの世界も後戻りできないときはある。
利用者が数百万人を超えれば、「とりあえず本番で直す」はもう通らない。 データが汚染されてしまうのだ。
それでも会議では、誰かが軽く言う。
「まず作ってみましょう」
その言葉を聞くたびに思う。
回路設計者が同じことを言ったら、全員が全力で止めるだろう、と。
我々ソフトウェアエンジニアは、ただ「煙が出ない」という一点だけで、ずいぶん長く甘やかされてきたのかもしれない。