なぜベテラン開発者は自身の専門能力を説明できないのか
この記事は、AI エージェントの台頭という文脈において、ビジネス側の「不確実性解消」志向とエンジニア側の「複雑性回避」志向の根本的な対立構造を解明し、資深開発者がその専門性を正しく伝えるための思考フレームワークを提供している。
キーポイント
二つの異なる循環圏の存在
ビジネス側(マーケティング・製品)は「不確実性」を減らすために速度と試行錯誤を追求する一方、エンジニアリング側は「複雑性」を避けるために安定性と保守性を追求するという、組織内に共存する二つの異なる目標循環圏が存在することを指摘している。
資深開発者の本質的役割
资深開発者は単にコードを書くだけでなく、システムへの複雑性(if 文の増加、新規データベースなど)がもたらす長期的なリスクを回避し、サービスの継続的な安定性を守る「狩人」としての役割を果たしている。
AI エージェントに対する誤解
「AI エージェントは開発者の未来であり、人間は不要だ」という主張が、不確実性の高いスタートアップ段階では一理あるように見えても、安定したサービス運用においては複雑性を増大させるリスクがあるため、资深開発者が懐疑的になるのは当然であると分析している。
専門性伝達の欠如
资深開発者が「なぜこの機能が必要ないのか」や「なぜ複雑化を避けるべきか」という本質的な理由(複雑性のリスク)を、ビジネス側の言語で説明できないことが、彼らの価値が過小評価される主要原因であると結論付けている。
影響分析・編集コメントを表示
影響分析
この記事は、AI ツールの普及が進む現代において、エンジニアと経営層の認識ギャップがなぜ発生するのかを構造的に解説しており、組織内の対立を解消し、開発者の専門性を適切に評価・活用するための重要な視点を提供します。特に、技術的な判断を「抵抗」ではなく「リスク管理」として再定義するアプローチは、AI 導入が進む企業における意思決定プロセスの改善に寄与するでしょう。
編集コメント
「AI が開発者を不要にする」という過激な主張に対し、現場の资深開発者が抱える本質的な懸念(複雑性の管理)を冷静に分析した良質な記事です。技術者だけでなく、プロダクトマネージャーや経営層にも読んでほしい視点が含まれています。
なぜベテラン開発者は自分の専門性を説明できないのか
著者:Tuhin Nair**
原文:Why senior developers fail to communicate their expertise
次の言葉に対して、あなたはどう感じるでしょうか?
「AI エージェント (AI agents) はソフトウェア開発の未来です。もはや業務を遅らせるだけの開発者は必要ありません。」
あなたがベテラン開発者で、この発言に同意するのであれば、あなたの専門性について疑問を抱かざるを得ません(理由は後ほど説明しますが、単なる挑発ではありません)。
しかし、もしあなたがベテラン開発者ではなく、それでもこの発言に同意するならば、おそらくあなたは正しいでしょう。
え?一体どういうことでしょうか?
コピーライティング (Copywriting) の本質とは、情報を適切な対象者に正確に届けることです。
つまり、私というコピーライターから見れば、ここで起きていることはこうです:同じ一文でも、2 種類の異なる聴衆にとっては全く異なる意味として聞こえるのです。
あなたがベテラン開発者で、すでに驚くべき AI エージェントや大規模言語モデル、そして様々な派手な AI スキルを体験済みでありながら、それでも直感的に「皆がプログラマーの失業を叫んでいるが、どうも違和感がある」と感じているなら、この記事ではその言葉にできない直感を、明確な文章として表現してみせます(これが優れたコピーライターのすべき仕事です)。
しかし待ってください!現在、多くの経験豊富な著名開発者たちが「プログラマーは死んだ」と宣言しています。
これはどうしたことでしょうか?一体誰の直感が正しいのでしょうか?この対立を生み出している要因は何なのでしょうか?
私がチームに参加する際、通常 2 種類のベテラン開発者に遭遇します。
1 番目のタイプは次のように言います:
「新しいツールを見つけたんだが、すごくクールだぜ……」
「あそこの会社(我々の事業とは全く関係のない企業)就是这样やってるから、だから……」
「HackerNews のあの投稿を見てくれ、そこではこれがベストプラクティスだと書いてあるし、僕たちもそうすべきかもしれない……」
正直なところ、私はこうしたタイプのベテラン開発者があまり好きではありません。彼らは往々にして自己防衛本能が強く、業界で長く活動しており、人望もあるかもしれません。しかし、私たちは同じ周波数には乗れていません。
続いて 2 番目のタイプ:
「本当にその機能が必要なのか?」
「もしこれをやらなかったら、何が起きるのか?」
「まずは妥協して乗り切れないか?もっと重要になった時点で改めて取り組めばいいのではないか?」
ああ、これが私の理想のベテラン開発者です。彼らは回避者であり、簡素化の達人であり、廃棄物利用のエキスパートです。あらゆる手段を講じてコードを書くことを避けようとします。
なぜでしょうか?彼らは専門的なソフトウェア開発キャリアにおいて、生涯にわたって恐ろしい怪物「複雑性 (Complexity)**」を狩り続けてきたからです。
様々な特殊ケース、無数の if 条件分岐、新規のデータベーステーブル、新しいコンポーネント。これらすべてが頭痛の種です(システム全体の保守性と理解可能性を著しく高めるため)。ベテラン開発者はこれらの要素を極力減らしたがり、本当にこのコードを書く必要があるのかどうかを何度も確認するために時間を費やします。
システムに何かを追加することは、すなわち複雑性のリスクを増やすことを意味するからです。
はい、はい、そう言うと少し言い過ぎかもしれません。確かに、未解決の難題を克服し、創造的な新アーキテクチャを提案できるベテラン開発者も大勢います。
しかし究極のところ、安定して稼働しているシステムに責任を負うのであれば、あなたは複雑性を恐れるようになります。
では、なぜそうなるのでしょうか?複雑性にはいったいどのような悪影響があるのでしょうか?また、なぜ他の人たちはこの恐怖を理解できないのでしょうか?
私たちは 2 つの「循環圏」を用いて、企業の運営様式を簡略化して説明しようと思います。
これが最初の循環圈です。マーケティング担当者、営業担当、プロダクトマネージャー、そして CEO はすべてこの圏の中にいます:

最初のループ:ビジネスチームは、迅速な試行、市場からのフィードバック、そして学習を通じて、不確実性を継続的に低減させています。
このループの核心的な目標は、試行と学習です。企業は製品を市場に投入し、フィードバックを得て、自分たちが作り出したものに本当に価値があるかどうかを確認したいと考えています。
このループの中にいる人々が直面する怪物とは何かというと、不確実性 (Uncertainty) です。
不確実性は残酷なものです。なぜなら、どんな戦略も 100% の成功率を保証するものはないからです。この不確実性が時間と絡み合ってくると(例えば、マーケティングや営業の給与、創業者への給料支払い、あるいはプロダクトマネージャーが急務とするデータなど)、デッドラインが迫る前に、いかに早く製品を市場に投入するかこそが、不確実性を減らす唯一の方法のように感じられます。市場に投入するものが増えれば増えるほど、得られるフィードバックも増え、(潜在的には)排除される不確実性も多くなります。
このループ——そしてすべての企業がスタート時に通らざるを得ない道程——は、純粋で原始的なスピードを追求しています。
しかし、企業が顧客を獲得し始めるとどうなるでしょうか?
アハ、ここで私たちの2つ目のループが登場します。人々がサービスの対価を支払うようになります。

2つ目のループ:有料顧客は既存のサービスに依存しており、シニアエンジニアは複雑性を制御することで長期的な安定を維持します。
多くのシニアエンジニアはこのループの中にいます。このループの核心的な目標は、サービスの継続と安定性の保証です。
システムが稼働し続けること、コードが読みやすい状態であること、問題がデバッグ可能であること、障害が修復可能であること、アーキテクチャが新人に伝達可能であること。そして何より、安定性を保つことです。
シニアエンジニアが安定性に心を砕くのは、企業が継続して顧客にサービスを提供し続ける責任を負っているからです。
では、それを脅かすものは何か?
複雑性 (Complexity) です。
複雑性はシステムを理解不能にし、デバッグを困難にし、修復を難しくし、引き継ぎを不可能にし、最終的にはシステムを極めて不安定なものにしてしまいます。
複雑性の増加 = 安定性の低下 = シニアエンジニアの失態 = 最悪の結果。顧客からの支払いが停止し、全員が眉間に皺を寄せます。
つまり、最初のループの目標が「不確実性の排除」であるなら、2つ目のループの目標は「複雑性の管理」です。
では、なぜこれがコミュニケーションの失敗につながるのでしょうか?
それは、顧客を獲得すると、この2つのループが同時に稼働し始めるからです。企業は新しい可能性を探求する必要がありながら、既存の顧客へのサービスも同時に維持しなければならないのです。

顧客を獲得した後、企業は新たな可能性を探求すると同時に、既存の顧客を守り続けなければなりません。
さて、今やあなたは記事のタイトルにある問いに対する私の答えを推測できたことでしょう。
あなたが時間を主に費やすループがどちらかによって、問題に対する認識の枠組みは全く異なります(これが、開発者が AI に対する見解で分かれる理由だと私が考える所以です。一部の人は主に最初のループで働き、他の人々は2つ目のループで働いているのです)。

同じ要件に対する2つの解釈:ビジネス側はより迅速な検証を、開発者はより多くのコードパスとメンテナンスコストを見ます。
最初のループにいる人々の物語は以下の通りです:

ビジネス側の物語:彼らが求めているのはコードそのものではなく、より早く答えを知ることです。
しかし、二番目のループにいるシニア開発者の物語は以下の通りです:

開発者の物語:真のプロフェッショナルな価値とは、より少ない複雑さによってより高い確実性をもたらすことです。
この二つの物語は根本的に噛み合いません。
シニア開発者が受け取る「新機能追加」の要求が多ければ多いほど、彼らはついつい反論したくなります。「いや……それは無理だ……あまりにも複雑すぎる……保守コストが高すぎる……コードが読めなくなる……今後の開発速度が遅くなる……長期的には生産性を阻害する……」。しかし、これらの愚痴はビジネス側が「不確実性の即時排除」を切実に求めているという要請に対して何の役にも立ちません。
診断結果:自分の悩みで相手の問題を誤魔化してはいけない。
処方箋:あなたの解決策を、相手も抱える問題を解決できる形にパッケージ化しなければならない。
シニア開発者がコミュニケーションに失敗するのは、常に「複雑性の管理」という論理を使って苦衷を説明しようとするからです。本来は、「不確実性の排除」という論理で自分の解決策を売り込むべきなのです。
シニア開発者が会社の他部門が本当に求めているのは不確実性の排除だと気づけば、彼らは自らの専門性を活かして支援できるようになります。
では、シニア開発者が最も得意とするスキルとは何でしょうか?それは、不必要なものを開発したくないという気持ちです。また、既存のコードを再利用する機会を鋭く見つける能力です。
*アンケートデータの収集が必要ですか?* Google フォームを使えばいいのですよ、ベイビー。
*新機能を開発してテストする必要がありますか?* 既存の UI インターフェースにダミーボタンを追加して、誰かがクリックするか試してみませんか?(いわゆる「絵空事テスト」や検証性テストです)
*新しいデータ分析サービスが必要ですか?* データを見て下す最も重要な意思決定は何でしょうか?その一つの意思決定のために、まずはチャート一つ、指標一つだけ作ってみることはできませんか?
*わざわざ手間をかけて私に完全な誕生日ケーキを焼いてくれますか?* やめましょう。私のサンドイッチにろうそくを一本刺せばそれで十分です。
これがシニア開発者が学んだ生存の知恵です:既存のソフトウェアリソースを活用し、巧みに相手に必要なものを与える方法を身につけたのです。
では、これをどのように伝えれば、毎回相手に小論文を書かせることなく伝えることができるでしょうか?
コピーライターたちは最も得意とするのが、複雑な情報を凝縮して一言で力強く表現することです。そこで、すべてのシニア開発者が暗記すべき魔法の呪文があります:「もっと速い方法で試してみませんか?」
「より速く (quicker)」という言葉を使うことで、ビジネス側が真に求めているもの(速度)を認め、迎合しています。「何か (something)」という表現は、目標達成には別の手段があることを示唆しており、「試す (try)」という言葉は、この解決策が完璧ではないかもしれないが、おそらく十分良いものであることを暗示しています。
この一言は、他部門の核心である「速度による不確実性の排除」を完璧に捉えつつ、シニア開発者が専門性を存分に発揮できる道を開きます:機能の簡素化、コードの再利用、そして運が良ければ開発そのものの回避です。
これが答えです。私が記事のタイトルに対する回答としたいのは、皆が「不確実性」で頭を抱えている時、シニア開発者は常に「複雑さ」を口にするという点です。
しかし!大きな転換点が到来します!
現在の AI はすべてを無意味なものにしてしまったように思えますね?なぜ簡素化する必要があるのでしょうか?なぜ再利用する必要があるのでしょうか?なぜ開発を避ける必要があるのでしょうか?AI は極めて短い時間で膨大な量のコードを書き上げることができます。
ああ、そうは言っても、AI がいまだにできないことが一つあります。それがまさにシニア開発者が今もなお堅持していることです。
責任を負う (Take responsibility)——責任を被る。
必ず JSON 形式で返してください。translation フィールドのみ。他のフィールド (technical_terms 等) は一切追加しないこと — 余計なフィールドを書こうとして本文翻訳がトークン上限で打ち切られる事故を防ぐため:
{"translation": "翻訳全文"}
原文を表示
为什么资深开发者总是无法传达他们的专业价值
作者:Tuhin Nair**
原文:Why senior developers fail to communicate their expertise
你对下面这句话有什么感觉?
“AI 智能体 (AI agents) 是软件开发的未来。我们再也不需要那些拖慢业务进度的开发人员了。”
如果你是一位资深开发者,并且认同这句话,那我可能要对你的专业水平打个问号了(我会解释原因的,我并不是在故意找茬)。
但如果你*不是*资深开发者,却认同这句话,我觉得你大概率是对的。
咦?这到底是怎么回事?
广告文案 (Copywriting) 的本质,其实就是让信息精准匹配它的受众。
所以,在我这个文案工作者看来,这里发生的事情是:同一句话,在两类不同的受众听来,有着截然不同的含义。
如果你是一位资深开发者,并且你已经玩过那些让人大开眼界的 AI 智能体、大模型以及各种花哨的 AI 技能,但你的直觉依然告诉你:“大家都在宣扬程序员要失业了,这事儿听起来总觉得哪里不对劲”。那么在这篇文章里,我将尝试把你这种说不清道不明的直觉,用清晰的文字表达出来(这正是一个优秀文案该干的活)。
但是等一下!现在也有很多经验丰富的知名开发者在宣告“程序员已死”。
这又是怎么回事?到底谁的直觉是对的?是什么导致了这种分歧?
当我加入一个团队时,通常会遇到两类资深开发者。
第一类会说这样的话:
“我发现了一个新工具,简直太酷了……”
“某某公司(一家和我们业务完全不搭边的公司)就是这么干的,所以……”
“快看 HackerNews 上的这篇帖子,上面说这是最佳实践,我们也许应该……”
说实话,我不太喜欢这类资深开发者。他们往往有点自我保护欲,在行业里混了很久,可能人缘还不错。但我们就是不在一个频道上。
接着是第二类资深开发者:
“我们真的需要那个功能吗?”
“如果我们不做这个,会发生什么?”
“我们能不能先凑合一下?也许等它变得更重要的时候再回过头来弄?”
啊,宝贝,这才是我的“梦中情怪”资深开发者。他们是回避者、精简者、废物利用者。他们想尽一切办法去避免写代码。
为什么?因为他们在专业的软件开发生涯中,毕生都在狩猎一只可怕的怪物:复杂性 (Complexity)**。
各种特殊情况、一堆的 if 条件判断、新建的数据库表、全新的组件。这些全都是让人头疼的大麻烦(因为它们极大增加了系统维护和理解的难度)。资深开发者希望这些东西越少越好,他们会花大量时间去反复确认,是不是真的非写这段代码不可。
因为给系统做加法,就意味着增加了复杂性的风险。
是的,是的,我承认这么说有些过于绝对了。当然有很多资深开发者擅长攻克未解难题,并提出富有创意的新架构。
但归根结底,如果你要对一个正在平稳运行的系统负责,你就会对复杂性感到恐惧。
那么,这到底是为什么呢?复杂性到底有什么坏处?又为什么其他人都无法理解这种恐惧呢?
我们打算用两个“循环圈”来简化并解释一家公司的运作方式。
这是第一个循环圈;市场营销人员、销售人员、产品经理以及 CEO,他们都生活在这个圈里:

第一个循环:业务团队通过快速尝试、市场反馈和学习,持续降低不确定性。
这个循环的核心目标是尝试与学习。企业想要把产品推向市场,然后获取反馈,看看他们搞出来的东西到底有没有价值。
对于身处这个循环里的人来说,他们要面对的怪物是:不确定性 (Uncertainty)。
不确定性是残酷的,因为没有任何策略能保证百分之百奏效。当不确定性与时间交织在一起时(比如营销和销售的薪水、创始人的工资账单,或者产品经理急需的数据),你会感觉:在死线到来之前,尽可能快地把东西推向市场,似乎是降低不确定性的唯一途径。你推向市场的东西越多,得到的反馈就越多,你(潜在地)消除的不确定性也就越多。
这个循环——也是所有公司起步时的必经之路——追求的是纯粹的、原始的速度。
但是,当一家公司开始拥有客户时,会发生什么呢?
啊哈,现在,我们的第二个循环圈登场了。人们开始为服务付费了。

第二个循环:付费客户依赖现有服务,资深开发者通过控制复杂性来维持长期稳定。
很多资深开发者就身处这个循环圈中。这个循环的核心目标是:延续并保障服务的稳定。
保持系统运转,保持代码易读,保持问题可调试,保持故障可修复,保持架构可传授给新人,最重要的是,保持稳定。
资深开发者之所以操心稳定性,是因为他们肩负着让公司能够持续为客户提供服务的重任。
而什么会威胁到这一切?
复杂性。
复杂性会让系统变得难以理解、难以调试、难以修复、难以交接,并最终导致系统变得极不稳定。
复杂性上升 = 稳定性下降 = 资深开发者失职 = 糟糕透顶,客户付款中断,所有人都愁眉苦脸。
所以,如果说第一个循环的目标是“消除不确定性”,那么第二个循环的目标就是“管理复杂性”。
但这为什么会导致沟通上的失败呢?
因为一旦你有了客户,这两个循环圈就会同时运转。一家公司既需要探索新的可能性,又必须同时服务好现有的客户。

有客户之后,公司必须同时探索新可能,也必须守住现有客户。
好了,现在你可能已经猜到我对文章标题那个问题的答案了。
根据你把时间主要花在哪一个循环圈里,你对问题的认知框架是完全不同的(这也就是为什么我认为开发者在对待 AI 的观点上会产生分歧;有些人更多地在第一个循环里工作,而另一些人则在第二个循环里)。

同一个需求,两种解读:业务看到更快验证,开发者看到更多代码路径和维护成本。
在第一个循环圈里的人,他们的故事是这样的:

业务端的故事:他们要的不是代码本身,而是更快知道答案。
但在第二个循环圈里的资深开发者,他们的故事却是这样的:

开发者的故事:真正的专业价值,是用更少复杂性换来更快确定性。
这两种故事根本搭不上调。
资深开发者接到的“新增功能”需求越多,他们就越想回怼:“呃,不行……这太复杂了……维护成本太高……代码没法读了……后续开发速度会变慢……长期来看会拖累生产力……”。
但是,这些牢骚对于业务端“急需消除不确定性”的诉求来说,毫无帮助。
文案的诊断结果:你不能用你自己的烦恼,去搪塞别人的问题。
文案开出的处方:你必须把你的解决方案,包装成同样能解决他们问题的方案。
资深开发者之所以沟通失败,是因为他们总是在用“复杂性管理”的逻辑来表达自己的苦衷,而他们本该用“消除不确定性”的逻辑来推销自己的解决方案。
只要资深开发者能意识到公司其他部门真正渴望的是消除不确定性,他们就能利用自己的专业能力来提供帮助了。
那么,资深开发者最拿手的本领是什么?是不情愿去开发没必要的东西;是能够敏锐地发现复用现有代码的机会。
*需要收集问卷数据?* 用 Google 表单就行了,宝贝。
*需要开发一个新功能来做测试?* 你们有没有试过在现有的 UI 界面上加个假按钮,看看有没有人点?(也就是所谓的“画饼测试”或验证性测试)
*需要一套新的数据分析服务?* 我们需要看数据来做出的最关键决策是什么?我们能不能只针对这一个决策,先做一个图表、看一个指标?
*你想费劲给我烤个完整的生日蛋糕?* 算了吧,直接在我的三明治上插根蜡烛就行。
这就是资深开发者学到的生存之道:他们学会了如何利用现有的软件资源,巧妙地给别人想要的东西。
但是,你该如何沟通这一点,而不至于每次都要给别人写篇小作文呢?
文案们最喜欢把一堆复杂的信息浓缩成一句简短有力的话。所以,这里有一句每个资深开发者都必须背诵的魔法口诀:“我们能不能试个更快的办法?”
用“更快 (quicker)”这个词,是承认并迎合了业务端真正的渴望(速度);“办法 (something)”暗示了还有别的方式可以达成目标;而“试 (try)”则暗示了这个方案可能并不完美,但很可能已经足够好了。
这句话完美地切中了公司其他部门的核心需求——用速度来消除不确定性,同时也让资深开发者能够尽情施展他们的专业特长:精简功能、复用代码,如果老天保佑的话,完全避免开发。
就是这样。这就是我对文章标题的回答:当所有人都在为“不确定性”焦头烂额时,资深开发者却总是在把“复杂性”挂在嘴边。
但是!大大的转折来了!
现在的 AI 似乎让这一切都变得毫无意义了,不是吗?为什么还要精简?为什么还要复用?为什么还要避免开发?AI 可以在极短的时间内写出海量的代码。
唉,话虽如此,但有一件事 AI 至今还做不到,而这也正是资深开发者依然在坚持做的事。
承担责任 (Take responsibility)——背锅。
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み