熱脳しゃちょのブログ -50ページ目

熱脳しゃちょのブログ

おせっかい焼SE兼プログラマ兼……の辛い日々と、思う事なぞ

あー、うん。

AIが解析可能な規模、構造なら、「不可能ではない」ね。

でも、AI使ってまとめないとわからんってくらいでかい規模、忘れ去られた内容、増改築が重ねられたスパゲッティな構造の場合、「理解したつもりになる」ってのが一番怖いんだよ。

よくわからない変数は、多分無視されるだろう。

でも、わざわざ設定されていると言うことは、「何か意味があった」わけだよ。

チェスタトンのフェンスの典型例中の典型例だ。

AIはよくわからんあやふやなのも、「自信を持って言い切ってしまう」。

そういう物言いを、人間が好むから。

 

絵とか、議事録なら、モブの一人の指が6本になってようが、うっすい内容の会議要旨の取りこぼしがあろうが、大勢に差は生じない。

けど、プログラムなんて、なんてことない1行、1文字、1ビットが生死を分けることも稀ではない。

他のプログラムであまり見たことがない、ってだけで、オミットされるだろうと余裕で想像できる。

AIは中身を理解してるわけじゃないから。

 

無条件でAIを礼賛し、否定派を鼻で笑う「イケてる最先端のエンジニア」が多いけど、ちゃんと検証できてるか?

自分が理解できないことをやれてるから素晴らしい、って目隠し手放しで車運転しているようなものだって理解できてるか?

それによって起こった大惨事の責任を取りきれるか?

今までの炎上現場の状況からすると、こういう輩は一番最初に逃げ出してるからな。

経営者も、こういうなんか良さげな物言いする奴は、真っ先に疑った方がいいぞ。

 

AIを使うなら、その構造を理解して、その外側から検証できるだけの十分な技術力を持った上で判断しろよ?

まぁ、それができるなら、「AIマンセー!」とか言えないだろうから、不可能だろうけど w

 

数年後、「AI使って大量生産されたうんコードをなんとかしてくれーっ!!」って企業が大量に出現するだろう。

んでもって、その事態を収集できるだけの技術力を持つエンジニアは、ほとんどいないだろうし、彼の手足として動けるエンジニアすら数えるほどしかいない、育っていない、って状態になるだろう。

どの「AI活用Webサービス企業」も、低給料で雇った「運用エンジニア」を大量動員して、連日連夜の手動操作で誤魔化し続けるしかない、って消耗戦、デスマーチを、倒れるまで続けるしかなくなるだろう。

 

 

この世の、少なくとも疑いようのない真実の一つに、7つの習慣で言うところの「第7の習慣『刃を研ぐ』」ってのがある。

AIは、自動ナマクラ鋸を増やしているだけだと理解すべきだし、そこだけ量が増えても、その後の搬出処理がついていけなければ意味がないと言うことも理解すべきだ。

そもそも、木を切り出すと言う時に、ノコギリだけに注目するのがどれほど馬鹿かを理解すべきだ。

一連の流れを考えれば、ノコ引きの技術より、どう搬出するかの経路、切り出すに従って移動する集積地の移動戦略、さらにはそもそも優れた木材にするために何年も前から間引き、枝打ち、その前に日当たりなどを考えた植林計画をしておくという「事前準備」。こちらの方が、目立たないけど大事だって理解しとけ。

 

> 「AWSの運用の強みは、経験豊富な余剰人員によって築かれており、人員削減を行えば、基本的な機能が崩壊し始めます」

 

エンジニアの肌感覚として、これが主要因のような気がする。

システムがデカくなり過ぎて、勘所がわからなくなっている。

こういうのを、「認知負荷の高いシステム」と呼ぶ。

 

たいていの現場で、新入りのエンジニアが「ドキュメントが充実していてありがたいです」的なセリフを吐くことがあまりに多いんだけど、正直なところ、ドキュメントが大量すぎて、AI使おうが「これ」という情報が見つからない。いや、そもそも必要なドキュメントが存在しないことしかない(日本語が変なんじゃない)。

ドキュメントの書き方を、OJTで形式的にしか学んでいないんだろうと思う。

あるいはWebでたまたま読んだ記事を猿真似しているか。

そんでもって書きっぱなしで、「あ、今はそうじゃなくて、こうなってます」って口頭で伝えられることがあまりに多い。いや、修正しておくか、削除するかしろよ。

いや、経緯がわかるドキュメントが必要かと。

って、そんなどうでもいい経緯なんていらんわ!

経緯が分かったところで、何の役に立つと考えてるんだよ?

昔、アホなエンジニアありき。って記録以上でも以下でもないだろ。

なのに検索のノイズにしかならんのだぞ。

そんでもって、正しいドキュメントがあったとしても、読んでも大してプラスにならん。

なぜなら、ただの自分用の備忘録以上でも以下でもないものでしかないから。

誰に向けて、何を伝えるためのドキュメントか、ちゃんと意識して書かれた技術ドキュメントに、ほとんど出会ったことがない。

「あ、それ、このドキュメントのここに書かれてます」

って、なぜそれがこのタイトル、この内容のドキュメントに紛れ込んでるんだよ!
みたいなことがあまりに多い。

長々と書かれた検討ドキュメントの中に、実装の話を書くなよ。

しかも最新化されてない。

 

人間の理解力、認識力は当然だが、限界がある。

たいていムカつく東大の〇〇研究室の量産型卒業生なんて、「これくらいできて当然でしょう」的に他人を小馬鹿にしたような態度をとってきやがるんだが、そいつらも普通の人よりキャパが少し大きいだけで、色々積み上がってきて、見落としが増えてきたら誤魔化しまくって、誤魔化せなくなったら「新しいことをしたいので」とかもっともらしい言い訳してやめていきやがる。

おい、これ、どうすんだよ!

残ったエンジニアには、つくり散らされた無秩序なサービスを「運用でカバー」の日々。

 

こういうの、マジで普段使ってる単語の意味、理解してねぇんだな。

単語帳みたいに訳、定義を丸暗記してるだけなんだな、ってため息しか出ないんだが。

例えば「設定より規約」って概念がある。

これ、その場その場の行き当たりばったりな設計実装を増やしてしまうと、今時の複雑化、成長し続けるWebサービスは、簡単に認知力の限界を超えてしまうから、いくつかのパラメータからどこでも同じルールが適用されている状態にして、認知負荷を下げるってのが、ここ10数年のシステム構築界の常識なんだわ。

KISSの原則も、認知負荷を下げる(上げない)って文脈の上にある。

他の、いろんな手法だなんだも、基本的にこれを前提にしている。

 

のに、いわゆる「識者」は、箔をつけようとしてるのか知らんが、毎秒いろんな要素を取ってつけて、ゴテゴテとした悪趣味な神殿にして、崇め奉る「信者」から金を巻き上げようと、勉強会開いてるだろ?

おいらに言わせれば、「認知負荷を下げられない手法はくそ。カーゴカルトだ」だ。

今回のAWSの障害だけじゃない。
今の日本のどのWebサービスも、いつ大規模障害を起こしてもおかしくない状態だよ。

「今動いてるからいいっか w」
じゃねーんだよ。

 

 

と、想像力が決定的に欠如している「エンジニア」と話をするたびに、絶望感に打ちひしがれる。

 

というか、それ以外に思いつかないんだよな。

 

localhostが消えるとか、あまりに初歩的で致命的な不具合、今まで正しく動いていたところに発生する不具合は、ここ1、2年で経験がある。

というか、ここ1、2年にしか経験がない(もちろん主犯はおいらではない。居合わせただけ)。

 

AI のサジェストに従って書き換えた。

 

これ。

あと、

 

既存のテストがないから、AI で追加した。

 

サジェストによる書き換えが危険なのは、スコープ(フレーム)外での利用のされ方を AI が把握できない、部分(覗き穴/ピープホール)最適化しかできないと言う点と、こちらが本質的な問題なのだが、そこの処理の仕組み、文脈を理解してサジェストしているのではなく、学習元データで多く組み合わされているパターンを提示しているに過ぎない、と言う点だ。

これ、時間が経ってから致命的な事態を引き起こし、原因究明に手こずる原因になる可能性がとてもとてもとても高いのだよな。

レビューすると、「AIのサジェストがあったので」的な修正が入っていることがちょいちょいあるんだが、妥当でないサジェストを却下するだけの技術力がない場合、むしろLintとかパターンチェッカー的なのに留めておいた方が、思わぬ瑕疵を埋め込まずに済む。

 

できるエンジニア視点でも、スキャフォールドとして使おうとすると、細かく指定できそうで生成量が多いと見落としが発生しそうだし、確実なテンプレートで十分じゃん? という気しかしない。開発が進んだ時点では、さらに使い所がない。なぜなら、「新しいものを作っている」ので、既存パターンが通用しないことが多いから。

 

AIの生成「量」が圧倒的なのは確かなんだが、このレベルのコーディング能力を「神」と考えるレベルのエンジニアからは実質制御不能で、これを使役できるレベルのエンジニアからは低能中途半端すぎて役に立たない、ってのが、呪術廻戦の摩虎羅やな、と感じる。

 

例えば絵の自動生成なら、登場人物の一人の指が6本になってようが、この線はどこに繋がってるんだ? とか、この漢字はなんだ? みたいなものが混じってようが、ぱっと見気づかないし、見直しておかしいのに気づいても、大勢に影響はしない。

けど、システムの場合、下手すりゃ1ビットで致死的障害を発生させてしまったりする。

その違い、ヤバさを理解できてないエンジニアがこんなにゾロゾロと存在する、という現実に絶望する。

 

加えて、「マジかよ……」ってなるのが、「既存のテストがないから、AI で追加してカバレッジをあげた」ってドヤ顔で語るエンジニア。

なんて言うか、なんとなく良さげなテストを理解しないでなんとなくマージしてるんだけど、何をテストしなきゃいけないか理解しないで、現状のコードを追認するだけだったりする。

それで必要十分かちゃんと検討できるだけの技術力がないと、「命綱、巻きつけたよー」と言いつつ、その命綱が宙に垂れてるのに気づいてない、って状態になってたりするんだよね。

で、不具合が表面化したら、それ用のスペシャライズドな監視の仕組みを追加して、手動テストを追加して、不具合が発生したら本番DBに接続して手動で修正するって、そんなのが日を追うごとにどんどん増えていって、仕事の大半が不具合対応、ってうんこみたいな現場があちこちで爆誕してるんよ。

でも、どのエンジニアも、自分たちの現場が異常であることに気づくだけの技術力がなくて、毎日みんなで奴隷が回している謎の棒を回し続け、経営者は、なぜこんなにエンジニアの数が必要で、お金が湯水のように浪費されているか理解できなくて、ストレスを溜めまくってる。

 

それ、なんて地獄めぐり? w

マジでどの現場もさぁ……、ってなってる。

改善の必要があるって、誰も気づいてない。

気づいた人はとっくにやめてるから。

 

炎上してないけど、針の筵だよね。