HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

AIは動作する製品を生成しない、それはまだあなたの仕事です

AI doesn't generate working products, that's still your job (weeraman.com)

210 pointsby smckk197 コメント

要約

AIはプロトタイプ作成を劇的に加速させましたが、プロダクショングレードの製品への道のりを短縮したわけではありません。ソフトウェア開発の難しさは、構文を書くことではなく、システム設計、エラーハンドリング、セキュリティ、スケーラビリティといった判断力にあります。AIはコード生成の効率を上げますが、根本的な理解と判断力を持つエンジニアの価値は、むしろ高まっています。

全文翻訳

ソフトウェア開発がこれほどアクセスしやすくなったことはありません。プレーンな英語でアイデアを説明すると、数分で動作するプロトタイプが画面に現れます。UIがあり、データベースに接続し、想像したことを実行します。コードを一行も書いたことのない人にとっては、その瞬間は魔法のように感じられます。コンパイラやスタックトレースと何年も格闘してきた人にとっては、本当に驚くべきことです。 プロトタイプはあなたのラップトップで動作します。負荷の下で壊れます。エラーハンドリングがありません。APIトークンを漏洩している可能性があることがわかります。データモデルはデモには適していましたが、2人目のユーザーを追加した瞬間に崩壊します。認証は仮定で成り立っています。すべてが安全かどうか、という漠然とした懸念があります。デプロイしたいと思っても、突然、「これは動く」と「これは準備ができている」の間の断崖に直面することになります。 プロトタイプに到達することが、かつて難しい部分だったわけではありません。ソフトウェアエンジニアは、常に何かを素早く実行できるようにしてきました。時間がかかっていたのは、それ以外のすべてでした。スケールに対応できるシステムの設計、ユーザーが遭遇しないはずだが、必然的に遭遇するケースの処理、問題が発生したときにわかるようにするためのオブザーバビリティの構築、3年後に後悔する可能性が少ないデータアーキテクチャに関する意図的な決定。これらのどれも変わっていません。 AIは、最初の動作バージョンへの道を劇的に加速させました。最初の動作バージョンとプロダクショングレードのものの間の距離を縮めたわけではありません。混乱が生じるのは、旅の初期段階でのフィードバックループが非常に速く、非常に報われるようになったためです。あなたは尋ね、受け取り、結果を見ます。そのサイクルは本当にエキサイティングであり、ソフトウェア開発の残りの部分も同様に圧縮されているという印象を与えます。そうではありません。 ソフトウェア構築における難しい問題は、かつて主に構文を書くことではありませんでした。それは判断力でした。何を構築するか、どのように構造化するか、何を延期するか、いつ「ノー」と言うか。その判断力が、バイブコーダーを彫刻家に、そして職人に変えるものです。それはまた、プロトタイプとプロダクショングレードのシステムを区別するものでもあります。 コンピュータサイエンスを学ぶことに対する誤った見解 予測通り、AI生成コードのアクセス可能性は、コンピュータサイエンスを学ぶことがまだ理にかなっているのか疑問視する、業界への新規参入者の波を引き起こしました。もしあなたが働くアプリケーションへの道筋を説明できるなら、なぜアルゴリズム、データ構造、オペレーティングシステム、理論を何年もかけて学ぶ必要があるのでしょうか。コンピュータサイエンス教育の価値は、コードを生成する能力だけにあったのではありません。それは、システムがどのように動作し、どのように失敗し、なぜ失敗するのかについてのメンタルモデルを開発することにありました。そのモデルが、AI生成コードを見て、書かれたクエリが5000万行のテーブルに対してフルテーブルスキャンを引き起こすことを認識することを可能にします。それは、提案されたキャッシング戦略が同時負荷の下でレースコンディションを作成することを可能にします。それは、提案されたアーキテクチャが説明された問題を解決するが、次の問題を著しく困難にするだろうとあなたに伝えるものです。 その基盤がなければ、あなたはモデルの判断力に完全に依存することになります。そしてモデルには判断力がありません。それらはパターンマッチングを持っており、あなたの意図に合致すると信じているコードを生成することに熱心です。それらは、見た目が正しく、規約に従い、あなたが探しているものを見つけなければ、診断に数日かかるような方法で本番環境で失敗するコードを自信を持って生成します。 今こそ、コンピュータサイエンスを学ぶのに歴史上最高の時期かもしれません。なぜなら、理解と出力の間のギャップが縮小したからです。分散システムがどのように機能するかを真に理解している学生は、10年前ならかかっていた時間のほんの一部で、それを構築できるようになりました。 何が変わり、何が変わらないか 機械的にコードを書くだけのエンジニア、つまり要件を行ごとに実装に変換するエンジニアの需要は、実際に減少しています。その仕事の部分は自動化されています。起こっていることは、生産性分布の下限の圧縮と、トップにいる人々の天井の拡大です。最新のAIツールを使用する経験豊富なエンジニアは、5年前には想像もできなかったペースで進むことができます。それは難しい問題がなくなったからではなく、多くの時間と注意を消費していた機械的な作業が大部分処理されているからです。専門知識を必要とする作業により多くの時間を費やすことができます。 取り残されるエンジニアは、AIスキルを持たないエンジニアではありません。彼らはAIを理解の代用品として使用し、自身が推論できないシステムをバイブコーディングで乗り越え、その後、壊れたものを修正できず、成長するものをスケーリングできず、メンテナンスが必要な人に構築したものを説明できない状況に陥る人々です。 異なるレベルで操作することを学ぶ 必要なシフトは、新しいツールのセットを採用することではありません。それは、基礎に根ざしたまま、より高い抽象化レベルで操作することです。その組み合わせは、本当に強力で、本当にまれです。 今後数年間で同僚を追い抜くエンジニアは、AIを知識の代替ではなく、深い知識のフォースマルチプライヤーとして扱う人々です。彼らは、モデルに何を生成させようとしているのかを理解しています。彼らは、ジュニアエンジニアのプルリクエストに適用するのと同じ批判的な目で生成されたコードをレビューします。彼らは、機能の説明だけでなく、アーキテクチャの思考を会話に持ち込みます。彼らは、モデルが提案することにいつ反対すべきかを知っています。それは、新しいコンテキストに適用された古いスキルセットであり、劇的に高いレバレッジを持っています。 プロトタイプは簡単な部分です。今、違いは、誰もがそれをはっきりと見ることができるということです。プロトタイプの後に来るものは、依然として難しく、依然として実際のエンジニアリングの判断力を必要とし、依然として信頼性の高いソフトウェアを出荷するビルダーとデモを出荷するビルダーを区別します。 基礎を学びましょう。次に新しいツールを学びましょう。その順序で。