3 ポイント 投稿者 GN⁺ 2026-02-10 | 1件のコメント | WhatsAppで共有
  • 現代の技術システムは、あまりにも複雑で一個人が全体を理解できない構造へと発展してきた
  • ソフトウェア開発とAI活用が増えるにつれ、開発者が内部メカニズムを理解しないまま構築する事例が増加している
  • Simon Wardleyは理解なしにシステムを作る危険性を、Adam JacobはAIが開発手法を変えつつあることを、Bruce Perensは複雑性がすでに限界を超えていることを指摘する
  • Louis Bucciarelliは電話システムの事例を通じて、技術が複数の層で絡み合っており、誰も完全な理解には到達できないことを示す
  • この記事は、AIがこの複雑性を深める一方で、実際には人間はずっと以前から部分的な理解の中で技術を扱ってきたことを強調している

技術の複雑性と理解の限界

  • Twitterの衰退後、LinkedInでは技術理解と複雑性に関する議論が活発に行われている
    • Simon Wardley、Adam Jacob、Bruce Perensの投稿が相互に関連するテーマとして紹介される
  • Wardleyは基礎原理を知らないままシステムを構築する危険性を警告する
    • 「Magic」という表現は内部動作を隠すフレームワークを批判的に指し、Ruby on Railsが代表例として挙げられる
  • JacobはAIがソフトウェア開発のやり方を根本的に変えつつあると指摘する
    • AIは効率を高める一方で、開発者が下部構造を理解しないまま作業する傾向を強める
  • PerensはWardleyが懸念した状況はすでに現実になっていると述べる
    • 現代のCPUとオペレーティングシステムの複雑さにより、多くの開発者が実際の動作原理を誤って理解している

Louis Bucciarelliの「電話機」の事例

  • Bucciarelliは1994年の著書 Designing Engineers で、技術的リテラシーの限界を論じている
    • ほとんどの人は電話機の動作原理を物理レベルで説明できない
    • 通信網のルーティング、信号処理、衛星伝送、企業運営、規制構造など多層的な要素が絡み合っている
  • 彼は「誰も自分の電話がどう動いているのかを完全には知らない」という結論に至る
    • これは複雑な技術システムが人間の完全な理解を超えていることを象徴している

技術面接と「知識の限界」

  • 著者はNetflix勤務時代のBrendan Greggとの会話を振り返る
    • Greggは面接で応募者の知識の限界と、それにどう反応するかを評価していたという
    • 彼は「誰もシステム全体を完全には理解していない」という事実を前提に面接を行っていた
  • このアプローチは、知らないことを認める姿勢が技術的能力と同じくらい重要であることを示している

複雑性の本質とAIの影響

  • Wardley、Jacob、Perens、Bucciarelliの見解は、それぞれ異なる層で複雑性の不可避性を示している
    • Wardley: 理解なき構築の危険
    • Jacob: AIがもたらした効率と距離感
    • Perens: すでに存在する複雑性の現実
    • Bucciarelli: システム全体理解の不可能性
  • この記事はAIがこの問題を深刻化させるだろうと認めつつ、部分的な理解の中で技術を扱ってきた人類の長い現実を思い起こさせる

読者議論の要約

  • コメント欄では、AIが学習と理解を弱めるという懸念が多く示されている
    • 一部では「LLMがコードを代わりに書くことで理解の連鎖が断ち切られる」と指摘される
    • Wardleyは「以前は階層的なチェーンの中で理解が維持されていたが、LLMはそのチェーンを取り除く」と説明する
  • 別の読者は「AIの利点がリスクより大きいと断定するのは早計だ」と反論する
  • 全体として、AI時代における技術理解の喪失学習の断絶が主要な論点として浮かび上がっている

1件のコメント

 
GN⁺ 2026-02-10
Hacker Newsの意見
  • 最近のプログラミングで気になるのは、上の層(製品の目的)も下の層(実装方法)も分からない 「中間層開発」 が増えていること
    昔はビジネスを知らなくてもコードの意味は理解していたが、今ではコードがどう動くかすら知らなくていいという空気がある
    Claudeを使っていると、だんだん 状況認識能力 が落ちていく感覚がある。テストが通ってボタンが押せれば終わり、という開発文化の中で、もう自分には学ぶことも貢献することもない存在のように感じる

    • 「オーナーシップ」 が強調される一方で、実際に主導権を持とうとするとアクセス制限や情報不足にぶつかる
      特に大企業ほど透明性が低い。締め切りに間に合わせるために残業したのに、自分にだけ知らされず日程が延期されていたこともあった
      もし自分が単なる道具として扱われるなら、その役割だけを果たす。だが本当にオーナーシップを求めるなら、意思決定のテーブルに着く席が必要だ
    • 逆に、自分はClaudeのおかげでむしろ 集中力 が上がったと感じている
      以前は反復的な設定作業に時間を無駄にしていたが、今はコア機能にだけ集中できる。そのおかげで頭の中に全体構造をよりよく保てる
    • この現象は農業の自動化にも似ている。今はトラクターに座っているだけで機械が全部やってくれる。結局、人間はただの 座席センサー用の重り にすぎない
    • 自分はClaudeに完全自動開発よりも 小さな修正中心のインタラクティブなコード編集 を支援してほしい
      たとえばIDEで数行を選んでから音声で「この部分をこう変えて」と言えば即座に反映されるような形だ
      速度が十分に速ければ、マウス+音声制御は アクセシビリティツール としても優れていると思う
    • 実際、こうした問題は昔からあった。代表例が 依存関係地獄
      LLMはむしろこうした複雑さを減らしてくれるかもしれない。自分は適度な抽象化は好きだが、中身をまったく知らないのは嫌だ
  • この記事は、人々が内部を知らないまま 抽象化(abstraction) を使う現象についての話だ
    だがそれは自然な発展過程でもある。誰かがその抽象化を設計し、上の層で使えるようにしてくれた
    「自分はWi-Fiドライバを知らないのだからコードも分からなくていい」という理屈は成り立たない

    • 問題は、今や大半の人が 新しい抽象化を作る能力 を失う危険があることだ
      昔は「必要な複雑さ」を自分で扱いながら思考力を鍛えたが、今は単にパイプ役になっていることが多い
    • LLMが作ったコードは冗長すぎて、レビューにかかる時間がむしろ長くなる
      解決策は、汎用言語の代わりに DSL(ドメイン特化言語) で抽象化を包むことだ。SaaSならAPI-firstよりDSL-firstの方がよいと思う
    • 実のところ Clean CodeとOOP文化 も、すでに過剰な抽象化によって性能低下を招いていた
      AIがそれよりひどいとは思わない。重要なのは、自分が土台としている抽象化を理解することだ
  • 依存関係ツリー が実際には最も大きな問題を引き起こしている
    Node.jsプロジェクトを見るだけでも数百の依存パッケージがある。たいていは中身を知らなくても問題ないが、インターフェースが頻繁に壊れると危険になる
    チームがEOL(サポート終了)や脆弱性を追跡していないことも多い。「これはまだ保守されているのか?」すら分からないのが現実だ

    • こうした問題を SBOM/SCAツール で監視するのが理想だ
      だがAI以前から、すでにバージョン衝突による 依存関係地獄 に陥ったプロジェクトは多かった
  • 人はすべてを知る必要はないが、基礎を失う無知 は危険だと思う
    料理でいえば、小麦を育てる必要はなくても、卵を焼く方法すら知らないのは問題だ
    企業がすべての食べ物を標準化して調理してくれるなら、それは進歩なのか退歩なのかという問いだ

    • ほとんどの人は狩りや農業のやり方を知らなくてもよい。サプライチェーンが十分に 分散・冗長化 されているからだ
      いつかロボットが食料生産を完全に置き換えるなら、料理法を知らなくても構わなくなるだろう
    • どこまでが許容範囲で、どこからが危険かという 基準線 は人によって違う
    • 「卵の焼き方を知らないことの何が危険なのか?」という反論もある。
      依存を避けるために材料科学まで知っている必要はないだろう?
  • CPU命令やキャッシュのような下位層は、何十年にもわたって 検証と文書化 が徹底されてきた
    一方でLLMが作るコードはそれほど信頼できず、明日にはリファクタリングが必要になるかもしれない

  • 自分は下位層の詳細な動作は知らなくても、自分のコードがどう動くかは理解している
    下の層を知らないことと、自分の責任範囲を知らないこと はまったく別だ

    • 昔は複雑なシステムでも各部分を知っている人がいた
      今は 誰も分からないコード片 が生まれることこそ本当の危険だ
  • AIが状況をさらに悪化させているという主張には同意しない
    むしろLLMはほぼあらゆる知識を学習しているので、「電話はどう動くのか?」のような問いにも 体系的に説明 できる
    人間には「何を知らないのかすら分からない」という限界があるが、LLMは言語で表現された知識ならほぼ扱える
    もちろん推論やコード生成は弱いが、知識を統合する能力 は人間より優れている

    • だがLLMは「知っている」のではなく、もっともらしく生成している にすぎない
      本物の文書の代わりにはならない。ただし人間のように「何を調べるべきか」を教えてくれる点では非常に有用だ
  • 良い設計とは、全体を知らなくてもシステムが動く ようにすることだ
    問題はAIが作ったシステムそのものではなく、私たちがその 失敗モードと限界 をまだよく分かっていないことだ
    結局のところ、人間とAIをどう調整して必要なシステムを作るかという 組織的設計能力 が核心になる

  • 自分はコンピュータの内部を完全に知っているわけではないが、実用的な スクリプト自動化 で問題を解決している
    x86アセンブリを学ばなくてもPythonでインフラを管理できる
    だが経験豊富な開発者には、その知識を 共有する責任 があると思う。自分もいつかその役割を引き継ぎたい

    • 実用主義 だけを掲げると、結局は 過度な専門化 につながる
      好奇心を失わず、先輩開発者たちと積極的に対話すべきだ
    • 基本を教えようとすると、「そんなものは必要ない」という反応が多い
      だが 基礎理解の重要性 をどれだけ強調しても無視される現実にはもどかしさを感じる
    • 参考までに、良い学習資料として cpu.land のようなサイトがある
  • 「URLを入力すると何が起こるのか?」のような問いにも実際に答えられる
    自分は米海軍の 潜水艦原子炉技術者 として働き、電子理論からシステムのトラブルシューティングまで学んだ
    その後ITへ転じてからも、同じ姿勢で文書と実験を通じて最後まで掘り下げてきた
    こうした習慣のおかげで、問題解決では ランダムな知識のつながり が大きな助けになる
    VMEbusのWikipedia記事 も参考になる

    • 自分も似たような反応だった。大半の例をホワイトボードで即興で説明できる
      ただ、自分は 分からないことを放っておけない性格 なので、おそらく例外的なケースだろう
    • 理解の深さはさまざまだ。Web開発者はネットワークスタックまでは知っていても、無線信号のアナログ世界 はまた別次元だ