CEOが「AIが開発者を置き換えた」と発言したところ、エンジニアコミュニティ全体がDevToolsを開いた
AI、ソフトウェアエンジニアリング、そしてコードをリリースすることと本番システムをリリースすることの違いについての話
数日前、ベトナム人CEOによる投稿が現地のテックコミュニティに衝撃を与えました。
その主張は大胆なものでした。
「Claudeに月20ドル程度払っています。社内向けソフトウェアの開発者を置き換えました。」
彼は、中小企業はもうソフトウェア開発者、高額なSaaSサブスクリプション、あるいは数ヶ月にわたる開発を必要としないと主張しました。
代わりに、自然言語で欲しいものを説明するだけで、AIがそれを作ってくれるというのです。
その投稿はソーシャルメディア上で急速に広がりました。
何千人もの人が同意しました。
ソフトウェア開発の未来として称賛する人もいました。
ソフトウェアエンジニアの終焉の始まりと見なす人もいました。
誰もが意見を持っているようでした。
そして数日後、興味深いことが起きました。
少数のエンジニアが、バイラルになった投稿の背後にあるアプリケーションを見つけることができました。
好奇心から、エンジニアが自然と行うことをしました。
ウェブサイトを開きました。
F12キーを押しました。
DevToolsを開きました。
最初は、誰かを否定しようとしたわけではありません。ただ、それがどのように作られたのか理解したかったのです。
そして最初のスクリーンショットが登場しました。
「待って...なぜこれがフロントエンドに露出しているんだ?」
数分後、もう一つのスクリーンショットが来ました。
「この認証情報はここにあるべきじゃない。」
さらに別のものが来ました。
「管理ページは実際に保護されているのか?」
さらに多くのエンジニアが参加しました。
一部はJavaScriptバンドルを調査しました。
他の人はネットワークリクエストを監視しました。
一部はAPIコールを追跡しました。
数時間以内に、スクリーンショット、コードスニペット、技術的分析がベトナムのエンジニアリンググループ全体に広がり始めました。
1つの発見が5つになりました。
5つが20になりました。
会話はもはやAIがコードを生成できるかどうかについてではありませんでした。
それははるかに興味深い質問へと進化しました。
動作するソフトウェアと本番環境に準備できたソフトウェアの違いは何か?
第一印象
公平に言えば、そのアプリケーションは驚くほど良く見えました。
UIはクリーンでした。
認証は存在していました。
ユーザーはログインできました。
データを作成・更新できました。
誰かがデモ動画だけを見せてくれたら、私はおそらくこう言っていたでしょう:
「わあ。AIは信じられないほど良くなっている。」
そして正直に言って、今でもそう信じています。
なぜなら、次に起きたことはAIが悪いという証拠ではなかったからです。
それは、ソフトウェアエンジニアリングがコードを書くことよりもはるかに大きいという証拠だったのです。
最初の5分間
経験豊富なエンジニアが最初に検査するのは通常、UIではありません。
ブラウザがすでに知っていることです。
数分以内に、いくつかの問題が明らかになりました。
機密性の高い設定値がフロントエンドに直接露出していました。
決してクライアントサイドコード内に存在すべきでない認証情報がアクセス可能でした。
管理機能は実際には認可によって保護されていませんでした。
あるケースでは、単にCSSを使ってユーザーから隠されているだけでした。
ブラウザはそれを表示しないはずでした。
しかし、誰かが直接そこにアクセスすることを止めるものは何もありませんでした。
一部のAPIエンドポイントは、必要以上にフロントエンドを信頼していました。
通常サーバー側にあるべきいくつかのセキュリティチェックが欠落しているようでした。
いくつかの場所で、そのアプリケーションはユーザーが正直に行動することを前提としていました。
ソフトウェアが攻撃されることは、正直なユーザーによるものではありません。
最も興味深い点は?
これらの発見には高度なハッキング技術は必要ありませんでした。
ブラウザだけ。
数分間。
そしてDevTools。
これらはAIのバグではなかった
ここで、多くの議論が間違った方向に行くと思います。
人々はすぐにこう言います:
「ほら?AIはひどいコードを書く。」
私はそれが正しいとは思いません。
Claudeはランダムにシークレットを露出させることにしたわけではありません。
認可をCSSで置き換えることを意図的に行ったわけではありません。
ある朝目覚めてこう思ったわけではありません:
「今日はセキュリティのベストプラクティスを無視しよう。」
それは単に与えられたタスクに最適化されただけです。
プロンプトが:
「管理ダッシュボードを作って。」
だったなら、それはその通りに作りました。
安全な本番システムではありません。
それは2つの非常に異なるリクエストです。
AIは求められたことを正確に行いました。
本当の問題はAIではありませんでした。
本当の問題は、コードを生成することがソフトウェアをエンジニアリングすることと同じだと仮定したことにありました。
それは違います。
デモは成功した。エンジニアリングは完了していなかった。
これは私たちの業界が何年も説明に苦労してきたことです。
多くの人はソフトウェアエンジニアリングはコードを書くことだと考えています。
それは違います。
コードを書くことは仕事のごく一部に過ぎません。
本当のエンジニアリングは目に見えないレイヤーで起こります。
ユーザーが決して気づかないこと。
例えば:
- 認証
- 認可
- シークレット管理
- レート制限
- 監査ログ
- モニタリング
- バックアップ戦略
- ディザスタリカバリ
- データベースマイグレーション
- インフラストラクチャ
- 脅威モデリング
- 負荷時のパフォーマンス
- コンプライアンス
- セキュリティレビュー
これらのどれも製品デモには現れません。
これらのどれもスタートアップのローンチ動画をよりクールに見せることはありません。
しかし、これらはソフトウェアが本番環境で生き残れるかどうかを決定するものです。
AIはコスト曲線を変えた
これは実際には興奮する部分です。
5年前、MVPを構築するにはチームが必要でした。
今日では?
AIを持つ1人のファウンダーが週末に驚くほど印象的なものを作ることができます。
それは素晴らしいことです。
そして正直に言って、私はそれを愛しています。
より多くの人がアイデアを検証できます。
より多くのスタートアップが実験できます。
より多くのビジネスが反復的な作業を自動化できます。
AIはソフトウェア作成のコストを劇的に下げました。
それは間違いなく良いことです。
しかし、ソフトウェア作成のコストを下げることは、エンジニアリングの必要性を排除するものではありません。
それは単にエンジニアリングが価値を生む場所を変えるだけです。
仕事は決してコードを書くことだけではなかった
これはおそらくオンラインで見る最大の誤解です。
人々は開発者がタイピングのために給与をもらっていると仮定します。
そうではありません。
私たちは不確実性を減らすために給与をもらっています。
私たちはリスクを減らすために給与をもらっています。
誰でもコードを生成できます。
経験は次のような質問に答えるのに役立ちます:
- 誰かがフロントエンドをバイパスしたらどうなるか?
- ユーザーは他の顧客のデータにアクセスできるか?
- このサービスがオフラインになったらどうなるか?
- ダウンタイムなしでシークレットをローテーションするにはどうすればよいか?
- このアーキテクチャは100万ユーザーでまだ機能するか?
- デプロイメントが失敗した後にどう回復するか?
- 夜中の2時に本番が壊れたときに必要なテレメトリは何か?
これらの質問はプロンプトにほとんど現れません。
しかし、それらは本番環境で毎日現れます。
Vibe Codingは敵ではない
実際、私は毎日AIを使っています。
- Claude
- GPT
- Gemini
- Cursor
- GitHub Copilot
これらは私を劇的に速くしてくれました。
AIはボイラープレートを書きます。
AIは馴染みのないコードを説明します。
AIはテストを生成します。
AIはプルリクエストをレビューします。
AIは私がアイデアを数日ではなく数時間でプロトタイプ化するのを助けます。
それは私が今まで使った最高の生産性ツールの一つです。
しかし、私は加速と専門知識を混同しません。
運転免許を取ったばかりの人にF1カーを与えてもF1ドライバーは生まれません。
それはより速い初心者を生み出すだけです。
AIも同じように機能します。
ここで実際に起こったことは?
皮肉なことに、この話はCEOについてではありませんでした。
Claudeについてではありませんでした。
セキュリティの脆弱性についてでさえありませんでした。
それははるかに深い何かを露呈しました。
長年、多くの人々(私たち自身の業界を含む)が、ソフトウェアエンジニアリングをコードを書くことと誤って同一視してきました。
AIはその幻想を打ち砕きました。
コードを書くことは毎月安くなっています。
エンジニアリングの判断は安くなっていません。
むしろ、AIはそれをさらに価値のあるものにしました。
なぜなら今や誰でも数千行のコードを生成できるからです。
難しい部分は、それらの数千行が本番環境に到達すべきかどうかを知ることです。
私の見解
私はAIがソフトウェアエンジニアを置き換えるとは思いません。
AIが置き換えるのは、私たちが誤って仕事だと思っていたソフトウェアエンジニアリングの一部だと考えています。
コードをタイプすること。
本当の仕事は常に:
- システムを理解すること。
- 複雑さを管理すること。
- 失敗に備えて設計すること。
- ユーザーを保護すること。
- 良いエンジニアリング判断を下すこと。
皮肉なことに、AIはこれらのスキルをこれまで以上に価値のあるものにしています。
なぜなら、誰でもコードを生成できるとき...
最も難しい部分はもはやソフトウェアを書くことではありません。
そのソフトウェアがデプロイされる価値があるかどうかを知ることです。
最終的な考察
バイラルになった投稿が正しかった点が一つあります。
AIはソフトウェア開発を根本的に変えました。
それは障壁を下げました。
それはファウンダーを力づけました。
それは個々の開発者を劇的に生産的にしました。
それは祝うに値します。
しかし、エンジニアリングコミュニティの反応は、同様に重要な何かを思い出させました。
デモで印象を与えるソフトウェアと本番環境で生き残るソフトウェアの間には大きな違いがあるということです。
一つはアイデアを証明します。
もう一つは信頼を獲得します。
そして信頼は常にエンジニアリングするのが最も難しいものです。
おそらくこの話から得られる最大の教訓は、AIが開発者を置き換えるかどうかというものではありません。
AIが私たちの業界が長年避けてきた質問に最終的に答えさせるようになったということです:
ソフトウェアエンジニアは実際に何をするのか?
そしておそらく、初めて、私たちは単にこう言うよりも良い答えを持つようになりました:
「私たちはコードを書く。」
あなたはどう思いますか?
AIはソフトウェアエンジニアであることの意味を変えたのでしょうか?
それとも、ソフトウェアエンジニアリングが常に何についてだったのかを単に明らかにしたのでしょうか?

0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.