Spinach Forest

コードレビュー、コード読まずになにを読む?

エーアイの書いたコードは、書かせた人以外はレビューしなくていいし、もっといえばしない方がいいと思っている。今の職場は人間レビューが必須になっているけれど、他人のエーアイコードをレビューするのって外部性バリバリで全然フェアじゃない。自分のエーアイコードをレビューさせるのも気の毒。この無神経さに慣れたくない。

目先の実現可能性はさておき、自分にとって納得できる落とし所はどのへんかと考える。

まず Super-lint としてのエーアイコードレビューは必須。現状多かれ少なかれ皆なにかしらのエーアイコードレビューは使っているので、チーム開発ならそれを標準化し、ローカルルールや価値観を埋め込んでいく。

自分のコード

という前提で、まず自分の「所有」しているコード。エーアイと、エーアイに書かせた本人がレビューしたら、第三者のレビューはなしでいいんじゃね?ゴミ化して困るのは当人なわけだから。そもそも従来のレビュアにしても、自分で書いてない他人のコードのレビューは表面的になりがち。エーアイと大差ない。労に合わない。

その当人がゴミを残しチームや会社からいなくなってしまうリスクはある。ただそれは別にエーアイに限ったことではない。ゴミのスケールが桁違いなのは事実かもしれないが、人が書いてレビューすればゴミにならないわけでもない。チームが一丸となって作り上げたゴミの山をみたことないですか。

他人のコード

他人のコードを変更するときはどうか。あるいは逆に、他人が自分の所有するコードへの変更を送り付けてきたときはどうか。所有者に強い権限を与えよう。

従来は送られてきたコードにはある程度丁寧に付き合うのが礼儀だった。組織に閉じたコードでは特に(同僚に失礼なことしないよね)。が、エーアイコードでこれをやると所有者が外部性の被害に合う。

そこで一旦この文化・不文律を捨て、 Pi Coding Agent のように 拒否をデフォルトにする。他人からのエーアイコードは「貢献」ではなく「押し付け」だという新しい常識を広める。めんどくさそうな匂いがするなら「いらないです。さようなら」でいい。所有者がチラ見でアイデアを把握したのち自分のエーアイに書き直させてもいい。とにかく「有り難いもの」という感覚を捨てる。皆で捨てる。エラいエンジニアが strategy memo とかいってバーンと明文化する。

他人のコードを頻繁に書き換えている自分のような人間にとってはかなり不都合な世界だが、仕方ないと思う。コードを書くことより、コードの後ろにいる人間を説得するのに労力を割けということだろう。というか書いてないからなコード。エーアイが書いてるわけで。

コードは読まない→なにを読む?

この世界に「チーム共有コード」のようなものはない。すべてのコード片は誰かが所有する。そして人々は助け合わず、自分の身を守ることを優先する。楽しくない。この世界に楽しさを取り戻すには何らかの発明が必要。「オープンソース」や「コードの共同所有」は発明だった。同じようになにかが発明されないといけない。

具体的な発明の姿は見えないが、世の過激派の主張を見ると「コードは誰もレビューしない」勢力が今は一番元気に見える。Pandas の作者 Wes McKinney に至ってはエーアイレビューツールを自作し「もう全然コード読んでないよ」と言っていた。自分のコードを書いてないし、読んでない。

過激派が目指す世界では: 自分のコードは自分のエーアイレビューに任せる。他人のコードに踏み込んだら相手のコードのエーアイレビューに従う。共有コードは共有エーアイがレビュー。

進んだ先にある疑問: 人間同士はコードを読まずにどうやって「コードが実現したいこと」を伝え合うのか。この「意図」がエーアイコードの世界の「人間の読むコード」に相当するわけだが、素朴に「仕様」とか言い出すとエーアイのそれっぽい slop に侵略される。意図のやりとりでも受け手の外部性に対しては断固とした態度が必要。わかりにくい sloppy な意図はがんばって汲み取らずただ断って良い。

けれど今は人間にも「意図を伝える、明快で簡潔なコミュニケーション」すなわち anti slop が欠けている。つまり発明が必要なのは人間による読ませるコミュニケーション手法なわけだ。

個人的には「エレベーターピッチ」や「ラブレター」みたいな渾身のコミュニケーションが普通になったら面白いと思う。魂の叫びで slop に勝つ。

自分はコードを読み書きしない時代が来たら残念だけど、もし避けられないならかわりに形式的で官僚的なコミュニケーションも流れ去ってほしい。そしたら人類の進歩に数えたい。