AIが台頭してきて一年程が立ち1ジュニアエンジニアとして危機感を言語化しておきたいと考え、AIの変化という軸で1エンジニアから見た一年を振り返ってみようと思います。
だんだん「人間に行う指示」に近づいてないか
RooCodeの時はマイクロマネジメントするときの手順書の気持ちで書いていました。特にオーケストレーターモードの具体的な指示を参考に指示を書いていた記憶があります。
それがClaudeCodeのときには「(エラーメッセージ)の原因をしらべて」に変化しました。
最終的にKiroでは「OOという実装をしたい」-> kiroの作った仕様書のチェック「△△って実はXXだったりしない?」と指摘するという上流の文章チェック+テスト・実装の妥当性チェックに考えることが変化していきました。
ある方向において、マネジメントで権限が移譲されていく形に似たような進化を遂げているように思えます。
ブラックボックスへの許容
自分が「こういう動きをAIがするだろう」という細かいところまで考えずにブラックボックスで思考するようになってしまった気がします。もちろんコードの理解を放棄するというわけではなく「コードを書くこと=考えること」だったものが「自然言語で考えたものが結果的にコードに変わりそれをもう一度検証する」というプロセスに変化しただけでしかないわけです。
プロセスが変化したことにより、重複している「このコードは文法的に綺麗で正しいのだっけ」という思考プロセスを外部化、つまりLinterやTestの強化にという形で変化すること。そして「仕様書があっているか確認しよう」といういわゆる「上流工程」的な作業に変化しました。
つまり、プロセスが分割されたことで、「0 or 1のルール」か「抽象度の高い文章」に人が介在する作業は二分化され中間の「こういう動作をしてほしい」というものが段々と抜け落ちてしまったのではないかと思います。
これは「コードを書きながら抽象度の高い作業を理解する」フェーズとも言えるジュニアエンジニアとしては「今すぐつかえる」という観点で最大のライバルと「使いこなすと超効率化するツール」が同一であるという気難しい状態を作っているなと感じています。
ここから脱却するにはブラックボックスを許容しないで深掘りするというのが一番かなと個人的に思うので来年はこれにチャレンジしてみようと思います。具体的にはプライベートではテストと実装どちらかだけをAIに実装してもらい、それを人手で補完・説明できる状態を作り、CS知識として言語化・アウトプットしていく活動をしたいと考えてます。
SSOTが加速した一年
一方でspec駆動開発をはじめとしてAIに仕様を読めるようにしよう、つまり細かい要件をAIが読めるリポジトリ内に置こうという動きも活発化した一年だったように思います。この裏にはMermaidがgithubでも出力されるようになったという基盤の成熟とかも重なってAIは呼水でしかなかったのかもしれませんが少なくともAIというものがSSOTをGit管理に寄せる動きを大きく加速させたのは間違い無いかなと思います。
何か失っているものがあるのではないかという恐怖
素早く描けるようになったことで今までMermaidのこういう強制UI見栄えが好きじゃないから他の方法を使ってPngにしていたというものが急にMermaidなどの最低限のテキストから出力するような流れになりました。
一方で完全な画像はAIに丸投げして「それっぽく」できるようになりました。個人的には良し悪しどっちもあるが不可逆な流れであるなと考えています。
画像・図の話に偏ってしまいましたが、コードも同様に何か見落としてしまっているのではないかという恐怖が常に付き纏うようになりました。
よりCS的な知識が重視される時代へのシフト
この動きによって「とりあえず動くコード」を作るためのレベルは限りなく低くなったと思います。それこそ読み書きができればコードも書ける時代はだいぶ近くにきた気がします。
その中で「要求をComputerが処理しやすいように翻訳する」仕事としてのエンジニアはComputerのことを知るか要求のことを知るのどちらもより強く重要視されていくのだろうなと感じています。
まとめ: 結局やることは変わらない
ジュニアエンジニアである私から見ると、この一年でやるスピードは変わったがやる対策は「基礎的なCSをしっかりやり尽くす」「ユーザー・顧客・etc目線にたって適切なユーザーストーリに基づいて仕様を決める」この基本的な2点を大きく変えることはやっていなくて「考える」ことをより強くやり続けなければいけない時代になったのだなと身が引き締まりました。