ビジネス・スタートアップ
"コーディングは解決された"は論点を外している
"Coding is solved" misses the point (blog.mastykarz.nl)
要約
「コーディングは解決された」という主張は、明確に仕様化された問題をコードに変換するという狭い意味では正しくなりつつありますが、ソフトウェアエンジニアリング全体の問題を解決したわけではありません。AIは、ジャーナリズムにおけるワードプロセッサのように、出力生成を容易にしましたが、組織が直面するより複雑な問題、すなわち、既存の組織的コンテキスト(アーキテクチャ、ドメイン言語、歴史的決定、セキュリティ要件など)の中で、ビジネス目標を達成するための適切な設計と意思決定を行うという課題は依然として残っています。AIは実装レイヤーを自動化し、ボトルネックを上位の抽象化レイヤーへとシフトさせており、ソフトウェアエンジニアリングの本質は、ビジネス問題を解決するためのコンテキストに基づいた意思決定にあることを示しています。
全文翻訳
"コーディングは解決された"は論点を外している
数週間ごとに、誰かがコーディングは解決されたと宣言します。もし彼らが、明確に仕様化された問題を実行可能なコードに変換することを意味するのであれば、彼らはますます正しくなっています。しかし、実行可能なコードを書くことが常に問題全体だったのでしょうか?言語モデルは、ワードプロセッサがジャーナリズムを解決したのと同様に、ソフトウェアエンジニアリングを解決しました。それらは出力の生成を容易にしました。REST APIを構築したり、Reactコンポーネントを実装するように依頼すると、かつて数時間かかっていた作業が数分で完了します。驚くべきことです。しかし、組織は、彼らが実際に抱えている問題に対する答えを必要としています。AIは彼らが実際に抱えている問題を解決できるのでしょうか?
デモアプリはミニチュアのスタートアップです
コーディングが解決されたと確信するための最も簡単な方法は、ToDoリスト、天気予報アプリ、または個人ダッシュボードのようなデモアプリを構築することです。要件は明確で、制約はほとんどなく、アーキテクチャは自由に考案できます。あなたは白紙のキャンバスに描きます。次に、成熟した組織と比較してください。タスクは「ボタンを追加する」のように聞こえるかもしれませんが、コードを一行書く前に、次のことを答える必要があります。どのサービスがこの機能の所有権を持っていますか?使用すべき既存のAPIはありますか?なぜ以前は実装されなかったのですか?どのセキュリティ要件が適用されますか?どのアーキテクチャパターンが許容されますか?どのチームがこの領域の所有権を持っていますか?これが下流システムにどのように影響しますか?どのビジネス上の制約を最適化していますか?これらの質問のうち、コードを書くことに関するものはいくつありますか?非常に少ないです。ほとんどは、組織を理解する必要があります。だからこそ、週末のプロジェクトでは魔法のように感じられる同じモデルが、エンタープライズ内では単に役立つものに感じられるのです。プログラミングの問題は似ていますが、環境がそれをより難しくします。
私たちはボトルネックを規律と間違えた
数十年間、コードを書くことはソフトウェア開発の最も高価な部分の一つであったため、私たちはソフトウェアエンジニアリングと実装を同一視し始めました。AIは実装を劇的に安価にし、ボトルネックを他の場所に移動させています。自動化は、何が希少になるかを変えます。実装が豊富になるにつれて、私たちの注意は次の抽象化レイヤーに移ります。ソフトウェアエンジニアリングは常にいくつかのレイヤーで構成されてきました。
各レイヤーは異なる質問に答えます。
ビジネス目標:私たちはどのような問題を解決しようとしていますか?
プロダクトデザイン:ユーザーはどのようにソリューションを体験すべきですか?
ソリューションデザイン:システムはどのようにその体験を実現すべきですか?
実装:それをコードでどのように表現しますか?
今日のモデルは、最下層のレイヤーで例外的に優れています。スタックの残りはまだそこにあります。私たちは、実装の上にどれだけの作業があるかにようやく気づき始めています。
組織はコンテキストで動く
趣味のプロジェクトとエンタープライズソフトウェアを分けるものは一つあります。それはコンテキストです。具体的には、組織的コンテキストです。組織はすでにそのアーキテクチャとドメイン言語を知っています。それは歴史的な決定、エンジニアリングの慣習、所有権の境界、セキュリティ要件、ビジネス上の優先順位を持っています。長年のソフトウェア開発は、誰も書き留めなかった無数の仮定も生み出しました。このコンテキストは、すべてのステップに影響を与えます。戦略と規制はビジネス上の決定を形作ります。顧客の期待と確立されたUXパターンはプロダクトの決定を形作ります。既存のプラットフォームとサービスはソリューションデザインを制約します。コーディング標準、フレームワーク、デプロイメントパイプラインは実装を導きます。スタートアップは成長するにつれてこのコンテキストを作成します。エンタープライズは数十年のコンテキストを継承します。言語モデルにグリーンフィールドアプリケーションを構築するように依頼することは、10年前のプロダクションシステムを拡張するように依頼することとは根本的に異なります。難しいのは、既存のランドスケープ内で良い意思決定をすることです。
AIは抽象化のはしごを登っている
開発ツールの各世代は、ソフトウェアエンジニアリングの最も具体的なレイヤーを自動化します。コンパイラはマシンコードを自動化しました。高水準言語は低水準プログラミングを自動化しました。フレームワークはインフラストラクチャを自動化しました。今、言語モデルは実装を自動化しています。次のレイヤーがボトルネックになるまで、各ブレークスルーは革命的に感じられます。それがまさに今日起こっていることです。AIがコード生成に優れるほど、私たちの会話はビジネス問題を理解し、適切な体験を設計することへと移行します。私たちは、ソリューションを既存のシステムに適合させ、組織の制約内で健全な意思決定を行うことに、より多くの時間を費やします。
コードは常に媒体でした
AIはコードを書くことができます。間違いは、コードを書くことがかつて仕事全体であったと仮定することです。組織は、エンジニアにビジネス問題を解決するために報酬を支払います。コードは媒体であり、結果ではありません。では、コーディングは解決されたのでしょうか?明確な仕様を実行可能なソフトウェアに変換することを意味するのであれば、私たちはそれに近づいています。ソフトウェアエンジニアリングはスタック全体をカバーします。ツールの各世代は、あるレイヤーを安価にし、次のレイヤーを明らかにします。AIは、ソフトウェアエンジニアリングが本来何であったかを明らかにしています。