ドキュメントを読むのをやめたから、システムが理解できなくなったのだ
私は大学でコンピュータサイエンスを学んだわけではない。学んだのは地球物理学だ。
私は読み込むことでソフトウェアを学んだ。ドキュメント、ソースコード、GitHubのIssueを読んだ。古いブログ記事やRFCのスレッドも読んだ。ブートキャンプは利用しなかった。ブラウザと生の資料だけを頼りにした。
Cloudflare Workersを学んだとき、教材はなかった。あったのはドキュメントとチェンジログだけだ。深夜1時、デプロイの失敗を修正するために、バインディングの設定を3回も読み返した。数年前のGitHubのスレッドの中に答えを見つけた。
理解できるまで、資料と向き合い続けることで学んできた。
今、新しいパターンを目にする。人々は「なぜこのセクションは分かりにくいのか」とは聞かない。「Xのコードを教えて」と聞く。挙動を知るためにソースコードを追うことはせず、「この関数は何をするのか」と尋ねる。
かつて、目標は「理解」だった。今は「出力」だ。人々はこれを効率化と呼ぶが、実際には負債である。
「ハーフオープン状態」が何であるかを知らなくても、サーキットブレーカーを生成することはできる。テストでは動く。しかし6週間後、高負荷な本番環境で失敗する。失敗する理由は、メンタルモデルを持っていないからだ。「なぜ(why)」を抜きにして、「何(what)」だけを手に入れてしまったのだ。
「なぜ」こそが、唯一重要な部分なのだ。
ドキュメントを読むことは、メンタルモデルを構築することにつながる。脚注を読み込むことで、トレードオフやエッジケースが見えてくる。読んでいる最中に感じる「摩擦」こそが、学習が起きている瞬間なのだ。
Bookmark Brainを構築した際、Cloudflare Vectorizeを理解する必要があった。単にAPIを使うだけではなかった。埋め込み次元、インデックスの挙動、クエリの距離指標を研究した。HNSWの論文も読んだ。混乱が知識に変わるまで、その問題と向き合い続けた。
その知識があるからこそ、本番環境でシステムを稼働させ続けることができる。深夜2時に何かが壊れても、導いてくれるメンタルモデルがある。もしプロンプトだけを使っていたら、デモは作れたかもしれないが、論理的に推論できるシステムは作れなかっただろう。
これがエンジニアリングにおける格差を生んでいる。
- コードレビューにおいて:ある開発者はORMのドキュメントを読んでいるため、N+1問題を即座に見抜く。もう一人の開発者は、単にコードを生成しただけなので、それを見逃す。
- アーキテクチャにおいて:ある開発者はKafkaのパーティションとオフセットを理解している。もう一人の開発者は用語を知っているだけで、構造を理解していない。
- デバッグにおいて:デバッグはメンタルモデルの機能である。メンタルモデルがなければ、ただ何かを書き換えて、うまくいくことを祈るだけになってしまう。
AIはアーキテクチャ全体を保持することはできない。コードベース全体の全体像を見ることもできない。AIが生成したキャッシュレイヤーが、すべてのテストをパスしながらも、レースコンディションを誰も理解していなかったために本番環境でクラッシュするのを、私は見てきた。
格差はAIを使うか否かではない。どう使うかだ。
トレードオフを理解するために使うのか? それとも、理解することを避けるために使うのか?
最良のエンジニアは、ただ速く動いているだけではない。彼らは今でもチェンジログやソースコードを読んでいる。プロンプトでは再現できないメンタルモデルを構築しているのだ。
ドキュメントを読むことは一つの習慣(プラクティス)である。それは生産性に対する税金ではない。システムが壊れたときに、あなたをかけがえのない存在にするものなのだ。
読むことを飛ばせば、考えることも飛ばすことになる。頼れるものが何もない状態で本番環境に放り出されるまで、そのことに気づかないだろう。
Source: https://dev.to/dannwaneri/you-stopped-reading-the-docs-now-you-dont-understand-the-systems-go1
Optional learning community: https://t.me/GyaanSetuAi
