66 ポイント 投稿者 xguru 2023-07-10 | 8件のコメント | WhatsAppで共有
  • なぜ開発者をAIで置き換えるのが難しいのかについて
  • 多くのニュースではAIが開発者を代替するようになると語られているが、ソフトウェア構築において最も難しい部分はコーディングではなく、明確で正確な要件を作ること
  • 「それはバグじゃなくて機能です。あ、ちょっと待って、やっぱりバグですね」
    • 曖昧な要件はバグを生み出す
  • 「AIが開発者を代替するには、クライアントが自分たちの望むものを正確に説明しなければならない。私たちは安全です」

AIの現実: チェス vs. 自動運転車

  • AIはチェスのようにルールが限定され明確な領域では成功してきたが、自動運転車は無限の変数と例外状況のため、AIにとってはるかに複雑な挑戦
  • 技術分野ではファイブナインまたはシックスナインのAvailability(可用性)が標準(99.999%〜99.9999%)
    • 99%に到達するコストはそれほどかからない。99%とは、あなたのWebサイトが年間3日未満停止することを意味する(87.6時間)
    • しかし、9が1つ増えるたびにそこへ到達するコストは幾何級数的に増加する
    • 99.9999%にするには、年間で停止時間を31.5秒に抑えなければならない(99.9%は526分/8.76時間、99.99%は52分、99.999%は5.2分)
    • そのためには膨大な計画と努力が必要で、もちろん高コスト
  • AIがどれだけ良くなっても、常に事故のリスクはある
  • どの程度の事故を許容するのかは分からないが、少なくとも人間並みである必要がある

AIはソフトウェアを作れず、コードしか作れない

  • ソフトウェアを作って維持することは、チェスよりも運転に近い
  • 無数の変数があり、ルールは判断によって決まる
  • ソフトウェアを作るときには望む結果があるが、それはチェスのように単純ではない
  • ソフトウェアに「完了」はほとんどない。機能追加とバグ修正が続く継続的な営みである
  • ソフトウェアと違って、チェスの試合は勝つか負けるかした時点で終わる
  • ソフトウェア開発では、ソフトウェア設計をチェスのルールエンジンのようにするための道具を私たちは持っている: 技術仕様書
  • 最良の場合、この技術仕様書はユーザーの行動とプログラムの流れを予測する
  • しかし、このようなケースはほとんどない。私たちはあまりにも頻繁に、Wishlistを機能仕様として受け取ったり、ナプキンに書かれたワイヤーフレームや不明瞭な要件文書を渡されて、最善の判断を下すよう求められる
  • さらに悪いことに、要件は変わり、無視されることもある
    • 実現不可能な要件。原文では、Wi-Fiのない場所でSMSによるCOVIDアンケートを行うプロジェクトの事例が語られている。やらないのが正しかった
    • AIに果たしてこうした対応が可能だろうか?
  • AIが機能するソフトウェアを作れるようになるには、何を望んでいるのかを正しく理解し、それを明確かつ正確に定義できなければならない
  • この10年でソフトウェア業界はウォーターフォールからアジャイルへ移行してきた
    • ウォーターフォールでは、利害関係者は自分の望むものを理解し、それを文書化できると考えていたが、最終成果物が納品されたときに大きく失望したため失敗した
    • アジャイルはこのプロセスに対する解決策である
  • AIは、すでに存在するソフトウェアを最新のハードウェアや新しい言語へ書き直すことには最も適しているかもしれない
    • COBOLで書かれたソフトウェアを使っている場所はまだ多いが、その言語を学ぶ人はほとんどいないからだ
  • AIは、すでに作られたソフトウェアであれば人間より速く作れるかもしれないが、それは誰かがすでにそのソフトウェアをどう作るべきかを考え抜いているからである
  • AIは、私たちがデスマーチと呼ぶウォーターフォール型プロセスを使えば、かなりうまくソフトウェアを構築できる
    • ウォーターフォールでひどいのは誰か? それは人間だ
    • それは単にプログラマーチームに渡す文書を書く部分だけではなく、その前にあるすべてのことを含む
  • AIはいくつか驚くべきことはできるが、あなたの心を読んだり、あなたが何を望んでいるかを代わりに語ったりはできない

8件のコメント

 
pmc7777 2023-07-12

ソフトウェア開発に限らず、AIに対する懸念があるあらゆる分野全体に当てはまると思います。

 
botplaysdice 2023-07-11

要件検証を自動化するための技術は、これから大きく進化していきそうですね。テスト自動化がますます輝きを放ちそうです……。人間はもう、テストケースだけを管理する世界が来るのでしょうか……。

 
dkang 2023-07-10

「ウォーターフォールで何がひどいかって? まさに人間だ」
実際に経験した立場として共感します

 
hyeonseok 2023-07-10

良い記事を読んだので、では次はイシュー整理に行きましょう

 
eususu 2023-07-10

AIが開発者を代替するのは難しいかもしれませんが、開発者がキーワードだけ投げれば、コーディングはAIができるのではないでしょうか?
昔は冗談のように語られていた「口コーディング」が現実になるかも..

 
neidn 2023-07-12

今はCopilotやほかのAIを活用して、このように開発しているのではないでしょうか。
コメントに必要な内容を英語で書けば自動で作ってくれて、それが意図したものと一致しているかどうかだけを確認すればいいのですから

 
ethanhur 2023-07-10

とても共感する内容です。将来のソフトウェアエンジニアは、皆TPM的な能力を備えるようになり、それを求められるようになると私は考えています。

 
[このコメントは非表示になっています。]