Good developers learn to program. Most courses teach a language.¶
チェック¶
- [ ] 本文を確認した
- [ ] 概要を確認した
- [ ] タグを確認した
- [ ]
inbox/直下へ移行した
概要¶
良い開発者は「言語」を学ぶのではなく、システムの組み立て方、データの流れ、変更しにくい判断、コードの読み方を学ぶべきだという記事。 言語の構文や標準ライブラリを覚えることは必要だが、それだけでは人間の指示をコードへ翻訳する人に留まる。 AIコーディング時代には、コードを書く速度よりも「何を、どの順番で、どんな境界で作るべきか」を判断する力の差がさらに大きくなる。
本文¶
言語はボトルネックではない¶
多くの入門講座やブートキャンプは、特定言語の構文や標準ライブラリを教えて、それをプログラミングと呼ぶ。 しかし著者は、プログラミングの本質は言語間で共通する部分にあると述べる。
- システムをどう分解するか
- どこに境界を置くか
- データがどこにあり、どこへ流れ、どこで変換されるか
- どの判断はあとから変更しやすく、どの判断は長期的に固定されるか
言語を知っているだけの開発者は、指示を機械が読めるテキストへ翻訳できる。 しかし、その指示自体が正しいかを判断するのは別の能力。
プログラミングを学ぶとは何か¶
著者が「良い開発者」に必要だとする能力は、初心者向けカリキュラムに入りにくい。
- 他人のコードを読む
- データの流れを追う
- バグの仮説を立てて狭める
- 大きすぎる関数を見て、どこに独立した理由があるか考える
- スキーマや設計が過去の意思決定を背負っていることを読む
- 安全な修正と危険な修正を見分ける
これらは言語仕様の中にあるのではなく、書く人の頭の中にある。 言語はキーボードであり、判断そのものではない。
AIは差を増幅する¶
AIはコード生成を速くする。 しかし、何を作るべきかを判断できない人にとっては、もっと速く悪いコードベースへ向かう道にもなる。
AIはもっともらしいコードを書く。 使う側が、もっともらしいコードと正しいコードを見分けられなければ、そのまま出荷される。 一方で、境界や契約を判断できるシニアにとっては、AIは強力な増幅器になる。
ボトルネックは「どれだけ速くコードを書けるか」ではない。 「どんなコードを、どの順番で、どんな契約で書くべきか」を知っているか。
学習者がやるべきこと¶
著者は、初学者に次のような学び方を勧めている。
- 1つの言語を深く使い、実際に出荷し、1年は保守する
- 構造が違う2つ目の言語を学び、共通する部分を見る
- 実コードを読む。差分だけでなくIssueやPRの議論も読む
- 自分や誰かが使うものをend-to-endで作り、保守して痛みを観察する
- 15年先を行くシニアの作業を見る
- 言語固有ではない本を読む
- 経験者向けの「新しい言語を学ぶ」教材を見る
重要な問いは「最初にどの言語を学ぶか」ではない。 「誰が、システムの組み立て方を見せてくれるか」。
要点¶
- 構文や標準ライブラリを覚えることは必要だが、それだけではプログラミングを学んだことにはならない。
- 良い開発者は、データフロー、境界、変更容易性、過去の設計判断を読む。
- AI時代には、コードを書く速度よりも、正しいコードの形を判断する力がさらに重要になる。
- 学習はチュートリアル完走ではなく、出荷・保守・読解・議論の観察で進む。