𝗥𝗲𝗮𝗰𝘁 𝗜𝘀𝗻'𝘁 𝗧𝗵𝗲 𝗣𝗿𝗼𝗯𝗹𝗲𝗺. 𝗛𝗼𝘄 𝗪𝗲 𝗧𝗲𝗮𝗰𝗵 𝗜𝘁 𝗜𝘀.
ジュニア開発者に、送信ボタンをクリックしたときに何が起きるか聞いてみてください。ほとんどの人が明確な答えを出すことができません。
「APIコールがサーバーに送られ、レスポンスが返ってくる」と言うかもしれません。これは表面的な回答です。
もっと具体的な質問を投げかけてみてください:
- ブラウザはどのようにリクエストをパッケージ化するのか?
- どのHTTPメソッドが使われるのか?
- 認証はどこで行われるのか?
- サーバーはデータベースに到達する前にどのようにデータを処理するのか?
ここから沈黙が始まります。
ジュニア開発者は怠惰なのではありません。才能が足りないのでもありません。彼らには「コンテキスト(文脈)」が足りないのです。
私たちは基礎よりも先に抽象化を教えてしまいます。
ブートキャンプやチュートリアルは、素早い結果に焦点を当てています。ポートフォリオを作り、仕事を得ることを目的としているからです。Reactはすぐに結果が見えるため、その助けになります。
学習者はシステムを見る前にフレームワークを目にします。
- HTTPの前にReactを学びます。
- サーバーの前にコンポーネントを学びます。
- データベースの前に状態管理(state management)を学びます。
これにより、「何をすべきかは知っているが、なぜそれをするのかを知らない」開発者が生まれます。
これが「チュートリアル地獄(tutorial hell)」へとつながります。動画からコードをコピーして、生産的であると感じます。しかし、いざ一人で何かを作ろうとすると失敗します。「慣れていること」を「理解していること」と勘違いしてしまったのです。
AIツールはこの問題をさらに悪化させます。ChatGPTのようなツールは生産性を向上させます。しかし、AIが思考をサポートするのではなく、思考に取って代わるようになったとき、危険が始まります。
かつてデバッグは困難なものでした。根本的な原因を見つけるまで、ドキュメントを読み、失敗を繰り返さなければなりませんでした。その苦闘が脳を鍛えたのです。あらゆる問題をAIにアウトソーシングしてしまうと、エンジニアリングとしての判断力を失ってしまいます。
ソフトウェアエンジニアリングとは、意思決定を行い、トレードオフを理解することです。プロンプトを打つだけでは、それは学べません。
もし私がカリキュラムを作るなら、次のような順序で教えます:
- HTML/CSS
- JavaScriptの基礎
- ブラウザの基礎
- HTTPとAPI
- バックエンドの基本概念
- データベース
- 認証
- React
学生がReactに到達する頃には、なぜデータフェッチ(data fetching)が存在するのかを理解しています。ボタンクリックの背後にある仕組みを理解しています。
Reactが問題なのではありません。AIが問題なのでもありません。
問題は、基礎をあまりに速く通り過ぎ、その隙間が自然に埋まることを期待してしまうことです。
私たちは人々に「構築すること」を教えているのでしょうか。それとも、理解せずに「コピーすること」を教えているのでしょうか。
Source: https://dev.to/franklyn_nmesoma_86940ec9/react-isnt-the-problem-how-we-teach-it-is-38m8