LAMPエンジニアってこういうもんでしょ

こういうもんでしょって話をつらつらと

化石コードを読んだら太古の昔からエンジニアの仕事は変わらないんじゃないかと思ったお話

ちょっと事情があって8年ぐらい前に構築されたシステムのコードを読んでいた時の感想です。

www.facebook.com

 

化石コードを読んだ

所属会社は創業10年を超えましたが、2019年まで所属エンジニアがおらず、システム開発をする時には外部のパートナーさんにお願いして開発をしてもらっていました。
2013年頃に開発されて今でも動いているサービスのSSL証明書の期限が切れてしまい、当時開発をしていたパートナーさんにヒアリングしつつ証明書の更新作業をしていたのですが、そのパートナーさんが「継続保守するのは難しいので御社で巻き取って欲しい」と言っていたので、ちょっと真面目にコードを読んだりしました。
OSは古く言語のバージョンも古い、ライブラリのリポジトリは参照出来ずアップデートがままならない状態なので、実質フルリプレイスするしかない状態で稼働している事を把握しました。

なぜそうなったのか

理由は想像に難しく無く、構築の発注をして納品された後は、誰も保守をしてこなかったためです。
もちろん保守更新にも知識や時間が必要であり、システムをシステムたらしめるためにはある程度の予算を確保しないといけません。
予算と時間の確保をしなかった結果、稼働しているけど保守はされず、結果的にクローズをしていかないといけないシステムになっていってしまいました。

保守ってなんぞ

システムの保守は月単位での契約になる事が多いです。
特に納品物が明示される事も少ないので、発注側は具体的に何をしているのかを把握出来ていない事も多い印象です。
逆に発注者が何を保守として定義しているのか、みたいな事をわからないまま発注しているのを見かける事も多いです。
確保された時間の中で、エンジニアはライブラリや環境の更新をしていきますし、大規模な更新が必要であればスケジュールを組んで対応していきます。
何を更新するのか、どう更新するのか、なぜ更新するのか、みたいな内容もクライアントに共有しつつ対応してかなければなりませんが、契約時点ではクライアントはこれらを把握出来ていない事が非常に多いです。

走る化石

話はガラッと変わって、たなかは旧車に乗っています。
72年式のVW Type1、通称ビートルです。
自分で整備が出来ないので、日常点検の仕方だけ教えてもらって、定期的に整備工場でなんやかんやしてもらいつつ、気になる事があれば電話で確認して~みたいな感じで過ごしています。

整備士さんはプロのお仕事をしてくれる

「異音がする」「走り出しが何かおかしい」みたいなざっくりした内容から、「どこかのパーツが外れた、割れた」「ライトが点かない」みたいなわかりやすいものまで、状況をヒアリングして可能性を潰して対応をしてくださいます。
これは我々webエンジニアで言うところのヒアリングとデバッグ作業であり、「原因を特定するノウハウの有無がプロなんだ」という事を度々おっしゃいます。
原因さえわかってしまえば、本を見ながら、検索をしながら直せるものも多い、との事です。
素早く原因を特定し、適切な処置をする事で50年近く同じ車が走り続けられる、ということです。

自動車のエンジニアとwebのエンジニア

化石コードを読みつつ、プロが日々メンテしていたらこのシステムも50年走り続けられたのかなー、みたいな事を考えました。
旧車の中では丈夫で維持しやすいと言われるビートルも、数年単位、場合によっては数十年も放置された個体は再び走るために大変な労力を伴います。
固着したネジを外し、干からびたオイルを取り除き、錆びたパーツを交換し、再び安全に走るには時間とお金をかけなければなりません。
物理的な事であれば目で見て想像を膨らます事もたやすいですが、いざオンラインシステムの話になると、説明する側も聞く側もそれなりの知識が前提になってしまします。
それでも、エンジニアがエンジニアと呼ばれるようになった時から、作られたシステムを維持していく過程で必要になるものは、何も変わっていないのかなと、そんな事を考えたわけです。