プログラミング言語の選択は、技術的な議論というよりも、アイデンティティ、感情、エゴに基づく意思決定であることが多い。本動画では、言語選択の失敗によって倒産した企業の実例を紹介しながら、なぜエンジニアは言語選択において合理的になれないのかを神経科学の観点から解説する。脳は自己のアイデンティティに関わる信念が挑戦されると、物理的な攻撃を受けたかのように反応し、合理的な評価を妨げる。この見えない会話が、数百万ドル規模の技術的負債を生み出している。記事の著者は、言語選択を技術的議論から経済的意思決定へと再構築することで、この問題に対処する新しいフレームワークを提案している。

プログラミング言語選択の罠
現代には信じられないほど多くのプログラミング言語があります。RustからGo、Elixir、そしてもちろんTypeScriptまで。だからこそ、開発者が言語選択においてこれほど下手だというのは少し狂っていると言えます。言語に関する会話を見るたびに、有害だったり、間違っていたり、あるいはその両方が混沌としている状況です。
なぜこうなってしまうのでしょうか。私は先ほど、皆さんと一緒に読んでみたい記事を見つけました。「なぜエンジニアはプログラミング言語について合理的になれないのか」というタイトルです。その理由はたくさんありますし、著者と私の両方がそれについて多くの考えを持っていると思いますが、言語の会話では請求書を払えません。
ということで、今日のスポンサーからの簡単なメッセージの後、本題に入りましょう。コードのデプロイは最近とても簡単です。VPSにアップロードすれば準備完了、そのコードを保存するデータベースが必要になるまでは。そうしたらそれを立ち上げる必要があり、うまくいけば適切な場所に配置できます。そうでなければ、頑張ってください。そして一部のユーザーにとってリクエストが遅いことに気づきます。
だからCloudflareを立ち上げてCDNを前面に配置する必要があります。するとDDoS攻撃を受け始めます。だから今度はその前にさらに別のレイヤーを配置しなければなりません。そして全てが積み重なっていきます。新しいデプロイをしたいと思ったら、デプロイを担当する人が全ての場所を把握していて、全てを同期させ続ける方法を知っていることを祈るしかありません。あるいは今日のスポンサーであるSavalaを使うこともできます。彼らはデプロイを理解しています。
私が今説明した全てのこと、データベースの接続からCloudflare、CDN、DoS保護、自動デプロイのためのパイプラインまで、必要なもの全てがSavala体験の一部なのです。彼らはデプロイを理解していて、WordPressでさえも含め、あなたが投げかけたいものは何でもデプロイできます。Savalaを所有するKinstaという会社は、長い間クレイジーなWordPressの問題を扱ってきました。
そして今、私はダッシュボードを使って設定をクリックし、彼らがホスティングしているウェブサーバーの前にCloudflareを通じてCDNをオンまたはオフにできます。データベースも含まれています。それらを立ち上げたければ、ダッシュボードに行き、データベースをクリックし、新規作成をクリックするだけで簡単です。そして欲しいものを選べば、新しいデータベースができます。世界の他の全てがこれほど簡単だったらと想像してみてください。
人生はもっと良くなるでしょう。私は最近、自分の単発プロジェクトにSavalaを使っていてとても満足しています。サーバーを立ち上げたい場合や、fire crawlやMoodleのような既存のテンプレートを使いたい場合でも、ああ思い出がありますね、必要なことを素早く立ち上げてGitHubにリンクし、二度と心配する必要がない場所は他にありません。
お金と時間とストレスを節約して、コーディングの仕事に戻りたいなら、今日soyv.link/savalaで彼らをチェックしてみてください。サインアップすると50ドルのクレジットがもらえます。
なぜエンジニアは合理的になれないのか
さて、「なぜエンジニアはプログラミング言語について合理的になれないのか。リーダーシップの盲点。アイデンティティがどのように数百万ドルの技術的負債を駆動するか」。おお、これは楽しい始まりですね。
プログラミング言語は、企業が行う最も高価な選択です。しかし私たちはそれを技術的議論のように扱っています。この過ちが数十社を倒産させ、さらに数百社を傷つけるのを見てきた後、私は不快な真実を学びました。これらの決定は技術に関するものではめったにありません。それはアイデンティティ、感情、エゴに関するものです。そしてそれらはあなたの開発速度と予算を、手遅れになるまで見えない方法で破壊しています。
私はここでの全てに同意しますが、最初の文章を除いて。プログラミング言語は企業が行う最も高価な選択です。いいえ、企業が行う他の非常に高価な決定はたくさんあります。本当にたくさん。
しかし確かに、言語の選択は重要です。でもそれを変えることもできます。私はTwitchにいた時、フロントエンドをRuby on RailsからReactを使ったTypeScriptに、バックエンドをGoに移行しました。それは厳しい移行でしたが、それほど厳しくはありませんでした。物事を大幅に改善しました。そして最初からGoで始めた場合と比べても、それほど難しくありませんでした。
意味のある違いはありましたが、仕事はどうあれ大変だったでしょう。確実に価値がありました。振り返ってみると、私はTwitchがRailsを選んだ時にはいなかったのですが、彼らがもっと正しい何か別のものを選べて、その結果Twitchがより良くなっていた世界を想像するのは難しいです。
Railsは多くの理由で間違った選択でしたが、Twitchが重要になるポイントに到達するには十分に良い選択でした。一般的に言って、企業は技術的決定が重要になるポイントに到達することを最適化すべきであって、正しい技術的決定を行うことを最適化すべきではないと思います。
でもこの記事がどこに向かうか見てみましょう。なぜなら、この著者と私はすでに多くの点で同意しているようですが、全てではないからです。
Tackleでの失敗経験
キャリアの初期、私はTackleで働いていました。これは2000年代半ばに人気があった、高校生アスリート向けの有望なソーシャルネットワーキングサイトでした。さて、これがどれほど人気があったかについての良い情報は得られませんね。当時はそこそこやっていたようです。
キャリアの初期、彼はそこで働いていました。誰かの突然の退職により、彼はリードエンジニアからエンジニアリング担当副社長になり、12人のチームを率いることになりました。私たちは全ての目標を達成していましたが、私は20代前半で経験が不足していました。これは取締役会が修正したいと考えたリスクでした。彼らはCEOに、より経験豊富なCTOを採用するよう圧力をかけました。
私もこれがTwitchで起こるのを見ました。Twitchの創業者の一人であり、元CEOだったエメット・シアーは非常に技術的でしたが、TwitchのCEOを務めなければならず、多くの製品リーダーシップも担っていました。他の人たちがCTOっぽい立場に昇進して技術を運営しましたが、誰もそれを本当にやるのに十分な経験を持っていませんでした。だから彼はCTOを呼び込むための多くの圧力を受けました。
そして彼はそうしました。その後1週間でその人を解雇しました。そしてずっと後にまた。2回目はそれほど長く続かなかったと思います。私はそこにいませんでした。でも伝えられるところによると、3回目のCTOは実際に本当に良いそうです。
彼から学ぶのを楽しみにしていました。彼はPerlコミュニティで有名な人物で、O’Reillyのラクダ本の山を持ってやってきました。Perlの人たちですね。私はPerlの人たちとの経験が本当に複雑です。そのうちの一人は私の最初のマネージャーの一人で、私にTwitchでの仕事を得させてくれました。私は彼を心から愛していますが、ええと、彼はもう技術的決定をすべきではありません。
彼の最初の行動の一つは、私たちの言語であるPHPが間違った選択だと宣言することでした。彼はPerlへの切り替えを命じました。私はPHPのファンではありません。PHPを賞賛するためにここに座るつもりはほとんどありません。でもなぜ、これは2009年頃だと分かっています。分かります。でもこれはまだ、これは痛いです。これは本当に痛いです。ダメです。いいえ。でもこれは正しく聞こえますね。
Perlへの命令は、著者にとって見せかけの分析のように感じられたPHPとPerlの比較の後に起こりました。私たちの開発速度は崩壊しました。私たちのチームは新しい言語を学ぶだけでなく、ゼロから再構築しなければならず、製品を9ヶ月遅らせました。私たちの月間支出は20万ドルから50万ドルに跳ね上がりました。新しいPerlベースのシステムを構築しながら失った速度を補うために規模を2倍以上にしたためです。これが私たちの滑走路を半分にしました。
これは言語を選ぶことが失敗だったというよりも、正当な理由もなく言語を何かに変更することが失敗だったように思えます。私たちのCTOは少なくとも彼の約束のいくつかを果たしました。私たちは美しいシステムを構築しました。私が本当に誇りに思えるものでした。しかし手遅れでした。私たちがついにローンチした時には、市場機会は消えていました。
Facebookは今や大学を超えて拡大していましたし、私たちは資金的な滑走路の終わりにいました。支出の増加が私たちの滑走路を半分に短縮し、新しいサイトで十分な勢いを得られず、より多くの資金を調達するために必要なマイルストーンに到達できませんでした。その通りです。
これは非常に現実的な問題です。より多くの資金を調達したい時、あなたの会社は有望な投資先となる何かを持っている必要があります。誰も1年や2年であなたから利益を得るために投資するわけではありません。彼らは10年後に本当に成功する良い機会があるように見えるから投資するのです。
そのように見せるものは、獲得しているユーザー数や成長量、あるいはそれに類するクールな何かのための大きな右上がりの曲線です。クソみたいな技術を選んだために支出が倍増したことによるエンジニアの数が2倍になったことによる支出の指数関数的な曲線、それは投資を増やすことにはなりません。Facebookと競争できそうなユーザー成長があれば、それは投資を得られます。
でも彼らはビジネスに役立たないことをすることに時間とお金を浪費しすぎました。その結果、より多くの資金を調達できませんでした。これは議論の余地はありますが、ベンチャーキャピタルが機能しているということです。このビジネスは成功する可能性を低くすることをしたために罰せられました。なぜなら今、彼らは資金を調達できず、たくさん使ってしまったからです。こんなことはしないでください。
クリエイター市場がツール構築においては完全なクソみたいな状況だと気づき、Payingが適切な製品ではないと気づいた時、私たちがその分野で燃え尽きるまで最善を尽くし、失敗するまで全ての資金を使うことを許すのではなく、私は本当に難しい決断をしました。チームの大部分を解雇することで滑走路を延ばしました。
しばらくの間、Markと私だけになりました。私たちがそうしたのは、間違ったものを構築していることを知っていて、正しいものを見つけるための時間が必要だったからです。全ての資金を無駄にして、調達できない立場になるのではなく、できる限り滑走路を延ばしました。そうすれば将来再び調達することを決めた時に本当に良い立場にいられます。それはまだしていません。なぜなら私たちは今T3 Chatで黒字だからです。それはまだ信じられません。
でもこの一環として、滑走路について多く考えなければなりません。そしてCTOの採用はほとんど間違いだったように思えます。なぜなら以前はCEOが予算と支出とそれら全てを追跡し続けていて、エンジニアリング担当副社長の著者はプロジェクトを爆発させるリスクを冒すことなく物事がある場所で実行できたからです。
そしてここでさらに面白いのは、これを修正したかったのは取締役会だったということです。取締役会がここに関与する理由は、彼らが投資した資金を回収する機会を最大化したいからです。しかしほとんどの企業の取締役会について知っておくべき非常に重要なことがあります。彼らは創業者ではありません。エンジニアでもありません。有用な従業員でもありません。彼らは取締役会です。
彼らは早期に多額の資金を投資し、おそらく実際には正しいCEOに間違っていると言う特権を得た金持ちのクソ野郎です。もしあなたの取締役会があなたがすることすべてに同意するなら、あなたは悪い仕事をしています。あなたが取締役会にできる最善のことは嘘をつくことです。私は、私たちが今T3のために1人の取締役会を持っていることに本当に感謝しています。それは私です。それが人生をとても簡単にします。取締役会を持たなければならないことを考えると恐怖に震えます。
Standard Capitalのようなものに目を向けずにはいられません。彼らがやっている最もクールなことの一つです。これはXYCの人々による資金提供を受けたシリーズAで、その目的は取締役会の支配の側面を含む、多くのクソなしにシリーズAをより簡単にすることです。
彼らは取締役会の席を取りません。偉大な創業者は、取締役会メンバーと何が起こり得るかの恐怖の話を聞いています。彼らは上司を望んでいません。最高の創業者は、最高のアドバイスとサポートは彼らが尊敬する仲間から来ることを理解しています。その通りです。
これは、誰も何をしているのか分からなかった時代に良いと思っていたものの形に会社を強制したいと望んだクソみたいな取締役会の組み合わせです。これは2000年代半ばのようなものでした。彼らはこの男を説得してCTOを雇わせました。その仕事は技術を全面的に見直すことでした。確かに彼はやりました。そしてそのプロセスで会社をクソみたいな地面に叩き込みました。
だからそうです、これは起こるべきではなかった言語の切り替え、起こるべきではなかった雇用、何をクソしているのか分からなかった取締役会、そして彼らの言うことを聞いたCEOのクソ野郎でした。それがここで起こったことです。それでもそこから学ぶべきことはありますし、これが全てどこに向かうのか見るのを楽しみにしています。
でも創業者として、そして投資家として、私の考えをこれについて述べたいと思います。それがここで起こったことです。
私はしばしば、もし私たちがただPHPに固執していたらどうなっていたかと考えてきました。私たちは良いシステムを持っていて、本当の勢いがありました。私たちははるかに少ないコストではるかに早くローンチしていたでしょう。PHPはFacebookにとって十分良かったです。なぜ私たちにはダメなのでしょうか。
これも非常に面白い声明です。なぜならPHPはFacebookにとって十分に良かったのです、それが十分でなくなるまでは。そしてその時点で、Facebookはクレイジーな薬のオプションを取りました。それはPHPをネイティブコードにコンパイルするように書き直し、彼らがhackと呼ぶ言語にすることでした。彼らにとってPHPをCにコンパイルしてはるかに高速にする方が、PHPから移植するよりも簡単だったのです。それは笑えます。
だから彼らはそれをhackと呼んだのです。それはとてもhackだったからです。でも彼らはそれをやり、うまくいって、今日まで使い続けています。ここに面白いものがあります。著者を悩ませた質問は、なぜそのような経験豊富なリーダーがそのようなひどい間違いを犯すのかということでした。私にはそこに非常に多くの考えがあります。これは楽しい読み物になりそうです。
約束されたものと現実
約束されたもの。Perlに切り替えることで私たちが必要とするアーキテクチャが解放され、ゼロから再構築することで採用と品質が加速されるというものでした。しかし提供された現実は全く異なりました。チームが再学習して全てを再構築しなければならなかったため、開発速度は崩壊しました。そして彼らの支出率は非常に高く跳ね上がり、会社の資金が尽きました。
パターンは繰り返されます。私のキャリアが進むにつれて、同じパターンを何度も何度も見ました。Googleの言語プロダクトリードとして、私のグループにはC++、Java、Go、Pythonが含まれていました。MongoDBでは、13の異なる言語で書かれたチームを管理しました。それは、お願いだからSDKチームだと言ってください。それはコネクタを構築するようなものです。どのチームも13の言語であるべきではありません。それは私を恐怖に陥れます。
両方の場所で、相反するデータで武装した優秀なエンジニアたちがお互いに話が通じないのを見ました。それは全て真実でしたが、どれも完全ではありませんでした。Google Cloudでは、私たちの顧客全体で同じ課題を見ました。Tackleから20年進んで、私はデジャヴの瞬間を経験しました。
エンジニアリング担当副社長が、なぜ彼のチームが次のシステムをRustで構築する必要があるのかをリーダーシップにプレゼンテーションするのを見ました。そのプレゼンテーションは私のTackleでの経験と不気味に並行していました。古いプレゼンテーションでは、CTOがPerlのために挙げたほぼすべての理由が、当時のPHPについてより真実でした。
今、Rustを選ぶために挙げられたすべての理由について、Goが客観的により優れていました。例えば、彼らはRustの利点として簡単なビルドとデプロイを挙げました。それがRustの強みであることは事実です。しかしGoのほぼ瞬時のクロスコンパイルと単一の静的バイナリは、Rustの非常に長いビルド時間と比べて、その特定の基準ではRustよりもさらに強力です。
その通りです。私はGoを嫌っていますし、Rustは問題ないと思っていますが、この段落のすべての言葉に同意します。より簡単な言語を評価してから、私たちを遅くする言語にコミットする必要があります。そしてGoは、私がそれを嫌っているにもかかわらず、はるかに簡単な言語であり、多くの場所で多くの意味を持ちます。
彼らがGoを選ぶべきだったとは思いません。Goは彼らの状況にとって間違った選択だったでしょう。そして私はRustが正しい選択だったと信じています。しかし私を驚かせたのは、推論がどれほど壊れていたかです。もし彼らが論理的な議論をしていたなら、確実にGoを検討していたはずです。
そしてそうすることで、提示した基準を使えば、Goがより良いオプションであることに気づき、少なくとも基準を洗練させていたでしょう。その通りです。議論がここにあるのは残念です。Rustについて良いことがこれだけある、というのではなく、他の言語にはない、私たちにとって正しいものにするRustのユニークな性質がここにあります。
発表者は見てください、Rustがどれだけ良いかを示していました。これが意味を持つと私が思う理由と、これがそうではない理由はここにあります、ではありませんでした。なぜなら彼らは言語や会社にとって正しいことについてではなく、Rustについてあまりにも多く考えているからです。それが最も厳しい現実です。
これらのことを推し進める人々は、仕事よりも言語が好きで、言語と仕事が衝突することを望んでいるからそうしているのです。しかし彼らがそれを衝突させたいのは、一日中言語について考えたいからです。そういうものです。
会議の後、私はその副社長を脇に呼んで尋ねました。「他の言語候補をどのように評価したか教えてください」彼の顔は真っ白になりました。私たちは実際には他のものを見ませんでした、と彼は認めました。誰もがRustについて話しています。それでした。
5000万ドルの決定がハイプに基づいて行われ、承認されようとしていました。それは痛いです。私にとって本当に痛いです。これが私のキャリアの始まりからの質問への答えの瞬間でした。プレゼンテーションは分析を共有していませんでした。彼らはそれをしていませんでした。それは既に行われた選択の正当化でした。
これはハイプ、感情、アイデンティティに純粋に基づく決定でした。後ろの人たちのためにもっと大きな声で。これ以上真実ではありえません。私はこれをたくさん見ます。もし言語決定を行う人がそれについて本当に興奮しているなら、それはおそらく間違ったものです。
もし彼らがしぶしぶ興奮しているなら、彼らは「ええ、これは正しい選択のように思えます。確信はありませんが、評価した後では十分に良いように思えます」という感じです。それが正しい選択です。最良の技術的決定は、皆を本当に幸せにすべきではありません。何人かの人を怒らせ、何人かの人をうめかせるべきです。
見えない会話
すべての技術的議論は実際には2つの会話です。すべての言語の議論では、2つの会話が同時に起こっています。目に見えるもの、Rustはガベージコレクションなしのメモリ安全性です。Goはより速いコンパイル時間とより簡単なデプロイメントを持っています。Pythonは最も豊かな機械学習エコシステムを持っています。
しかし見えない会話は、私はRustプログラマーです。私はRustプログラマーになりたいです。Rustを選ばない誰かであることを想像できません。その通りです。次々と名言です。
もしあなたがこれを読んで、「まあ、私の最後の言語選択は違いました。私は合理的でした」と思ったなら、あなたの見えない会話は今動いていて、あなたがこの文を読んでいる間に自分自身を擁護しています。その通りです。
私はTypeScriptを選びません、それが正しい解決策だからではなく。私がTypeScriptを選ぶのは、それが十分に良い解決策だからです。私はそれが好きで、それは私をトラブルに巻き込みません。ええ。もしあなたが私がGoを書いているのを見たら、それは私の選択ではなく、正しい解決策だからやっていると知ってください。
もしあなたが私がTypeScriptを書いているのを見たら、それは簡単な逃げ道で、物事について考えたくないからやっていると知ってください。もしあなたが私がElixirを書いているのを見たら、私はそれを深く愛していて、それに対する良い言い訳がないので、物事に使えるふりをしているだけだと知ってください。
これは実際、これらの会話において私が平均的なエンジニアよりも合理的だと思う理由の一部です。私は自分の好きな言語を多くのことに使えないことを知っています。使いたいです。まだ全てをElixirで書けたらと思っています。本当にそうです。ただ、私がやっていることの大部分や、私がいる場所や、雇っているチーム、その他のことにとって意味がないだけです。
私がやっていることの多くについてElixirの正当化を書くことはできます。でも私が望むほど、そして私がそれを愛しているほどには、それをしていません。私が最初に愛した言語が、キャリアの最初の1年間しか使えなかったという事実。そしてその後それから移らなければならなかったことが、私を強制的に自分自身のこの部分を非常に早く乗り越えさせました。
そして私はそうしました。そしてその結果、今いる場所にとても満足しています。私はTypeScriptが好きではありませんでした。JavaScriptが大嫌いでした。でも今私はここにいて、今ではそれで大丈夫です。その一部はストックホルム症候群で、一部は実用性で、一部は言語を評価するようになったことです。
でも、私は早期にこれを乗り越えなければなりませんでした。そして今、他の人がそれを間違ってやっているのを見ると、それは多くを物語っています。Tackleでの私のCTOは見えない会話をしていました。彼の目に見えるPerl分析のすべてのポイントは技術的には真実でしたが、見せかけのように感じられました。なぜなら、それははるかに深い見えない会話をカバーするためだけにそこにあったからです。
彼は言語を評価していませんでした。彼は10年かけて構築したアイデンティティを守っていたのです。私たちの会社が月額30万ドル余分に支払ったのは、より良いアーキテクチャやより速い採用のためではありませんでした。私たちは彼がPHP CTOではなくPerl CTOになる機会のために支払ったのです。それが本当の取引でした。
再構築はただの支払いプランでした。本当に良いですね。その副社長のRustプレゼンテーションは、簡単なビルドとデプロイを利点として挙げていました。それは技術的には真実ですが、Goはその特定の基準で客観的により優れています。もし彼らが本当に目に見える会話をしていたなら、それに気づいていたでしょう。
彼らは少なくとも分析でGoを検討していたでしょう。彼らはしませんでした。なぜなら彼らは全くその会話をしていなかったからです。そして彼らは見えない会話に5000万ドルを費やそうとしていました。
なぜ自分のバイアスが見えないのか – 神経科学
なぜあなたは自分自身のバイアスを見ることができないのか、その神経科学。ここで神経科学と脳の可塑性に入っていくとは知りませんでしたが、ここにいます。最も魅力的な、ああ、どの研究か分かります。どの研究か分かります。もっとスクロールするつもりはありません。私が正しいかどうかを見るために、研究からの学びを引用するつもりです。そして私が正しいかどうか、すぐに分かります。
そして私はチャットの皆さんにもこれについてどう思うか聞くつもりです。なぜなら私が間違っていたら、この他の研究を見つけに行かなければならないかもしれないからです。でもまあ。対立する信念を持つ2つのグループがあります。それらの信念を確認する2セットの情報があります。4つのグループを作ります。
空が青いと思う人と空が灰色だと思う人がいるとしましょう。だから2つのグループがあります。空は青い、空は灰色。これを分割します。空は青い。このグループは青い空について読みます。このグループは灰色の空について読みます。そしてグループ3と4では入れ替えます。
読む前と後で、この信念についてどれだけ強く感じるかを各人に尋ねたら、何が起こると思いますか。だから私は10のうち6で空が青いと確信しています。あなたにはこの人がいて、彼らはこれを言って、それから空が青いことを証明する記事を与えます。彼らにどうなると思いますか。
そして同じことを信じていて、読む前に同じ10のうち6と言った似たようなグループの人々に、空が灰色だと言う記事を与えます。彼らの信念にどうなりますか。私たちは合理的な社会において、自分の信念と矛盾する情報を得たら、その信念への自信が下がることを望むでしょう。そして信念を確認する情報を得たら、その信念への自信が上がるでしょう。
しかし悲しいことに、人間は合理的ではありません。そして人々の信念の最大の増加は、矛盾する情報を読んだ時に来ました。もし彼らが10のうち6で始まり、青い空についてもっと情報を読んだら、7のようにぶつかるでしょう。もし彼らが10のうち6で始まり、矛盾する情報を読んだら、8か9で出てくるでしょう。
これがそうであることは不条理です。しかしこれが人間の働き方です。人間は自分の信念に挑戦したり確認したりするよりも、それを守ることに関心があります。もし誰かに自分が考えることを確認する情報を与えたら、クールです。彼らはそれについて微笑んで、何も変えません。もし彼らの信念と矛盾する情報を与えたら、彼らは倍になって擁護し、その信念がより強くなります。
私が考えていたのはこれについてここで読もうとしていることだと思います。過去20年間で行われた最も魅力的な研究の一つで、研究者たちは、圧倒的な矛盾する証拠に直面しても、なぜ人々は信念にしがみつくのかを理解しようとしました。彼らが議論したことは、人間の意思決定に関する私たちの理解を根本的に変えました。
研究者たちは参加者を募集し、まず各人のアイデンティティの中心となる信念を特定しました。彼らの政治的見解、彼らの基本的な見解、彼らが誰であるかを定義する信念。そして参加者がfMRIスキャナーに横たわった時、研究者たちは、これらのアイデンティティに基づく信念への慎重に構築された挑戦を、参加者が持っているが自己感覚の中心ではない信念への挑戦と並べて提示しました。
脳のスキャンは注目すべきことを明らかにしました。これら2つのタイプの挑戦は、完全に異なる神経経路を活性化しました。周辺的な信念が挑戦された時、その人が信じているがアイデンティティの核心ではない何か、脳の推論センターは正常に活性化されました。参加者は証拠を考慮し、議論を比較検討し、時には心を変えることさえできました。
これは私が考えていたものとは異なる研究のように思えます。ほとんどそのフォローアップのようなものですが、これも非常に良い学びです。しかしアイデンティティに基づく信念が挑戦された時、脳は物理的攻撃を受けているかのように反応しました。扁桃体、あなたの脅威検出システム、捕食者や物理的危険に遭遇した時に発火する同じシステムが、即座に活性化されます。
もしあなたが人々が私についてオンラインで嫌なことを言っているのを見たことがあるなら、私が退化したクリックベイトのsoy boyで、自分がクソだからコードを書くためにインドの開発者に金を払っているという。それは私がある時点で彼らのアイデンティティに挑戦したからです。
私が言った何かが、皆がただRustを書けば世界がもっと良くなるという彼らの信念、あるいは真実ではない何らかのクソに反していました。そして私が言ったその声明は、彼らを深く苛立たせ、彼らは私が大切にしている何かがそれほど重要ではないと考えることをあえてした人間として、私に対して lash outするのです。
私がインターネットのほぼどこでも受ける憎悪の大部分は、特にこれです。大したことではない何かと自分を同一視し、その結果としてただ怒っている人々。チャットで彼らのお気に入りのTheoの論争をここから持ち出してください。Flutterデベロッパーのアイデンティティが破壊されたこと。最も面白い男はUUIDの擁護者でした。あれは素晴らしかったです。
どんなUUIDでもクラックできると確信していた男。伝説的です。絶対的に伝説的です。皮肉なことに、私はこれについて話すことで何人かの人々のアイデンティティに挑戦したばかりで、今彼らはそれについて怒っています。絶対にそうです。私のビデオのコメント欄には、本当に怒っている人たちが何人か出てくるでしょう。楽しくなるでしょう。
島皮質は、感情的な痛みと嫌悪感を処理するもので、活動で明るく光ります。これらの例で最も語っているのは、脳のデフォルトモードネットワーク、あなたの自己感覚と個人的な物語を維持するシステムが、防御モードに入り、新しい情報を評価するのではなく、既存のアイデンティティを保護するために働くことです。その通りです。
言い換えれば、あなたの脳は証拠を比較検討していませんでした。それは実存的な脅威から自分自身を守っていたのです。研究者の結論は厳しいものでした。別の見方を考慮するには、自分自身の別のバージョンを想像しなければなりません。その通りです。
私はこの信念について多く考えます。これを最初に聞いた場所は覚えていませんが、「ここに情報があります」と言うことによってではなく、「あなたが同じ人だと想像してください。あなたのクローンがいて、この一つのことを除いて他のすべてが真実です。彼らはあなたが信じていることの反対を信じています。彼らをその信念から説得するにはどうしますか」と言うことによって、誰かに信念を再考させる方が遥かに簡単です。
そして彼らがあなたにこれらの情報を与えたら、あなたはどのようにそれらに反論しますか。そして彼らに頭の中でこの他の人との会話を考え始めさせると、彼らのクローンで、この点を除いてあらゆる点で似た信念を持っている、そしてあなたが彼らに行き来を与えると、彼らは根本的に異なる方法でそれについて推論し、実際に説得できます。
私には似たようなことがあって、自分自身のためにやっていることがあります。それは私の全ての辛辣で厳しい見解のために自分自身に課しているものです。例えば、Flutter を使いましょう。Flutterについて話すのは嫌いですが、ここでは良い例です。私はFlutterを災いだと思っています。私たちが毎日使うモバイルアプリケーションを著しく悪化させていると本当に信じています。
しかし私はここで信念を変えることができます。私は物事についての信念をどのように変えるかについての自分自身のためのフレームワークを構築しました。強い信念を持っている時、私には、私に提示されたら私の心を変えるであろう、エッジ、例があります。
私が強く信じているこのことについて、私の心を変えさせるために与えられる一つの情報は何でしょうか。Flutterで私を説得する情報は、私がiPhoneにインストールして使用でき、定期的に使用して快適な体験ができるFlutterアプリです。それだけです。
私が今電話で使用できて、それを理解しようとしたり、私が今まで見つけていないクソを扱ったりすることに惨めにならない、良いFlutterアプリを一つ与えてください。私は文字通り100以上のFlutterアプリを電話にインストールしましたが、すべてゴミでした。
だから私はFlutterの人々を真剣に受け止めることは決してないでしょう。もし彼らがFlutterを使用する良いアプリ、私が定期的に使用している自分自身を見ることができる、実際に使って快適なアプリを私に提示できないなら、私は気にしません。私は彼らや彼らの技術について全く気にしません。そういうものです。
だから私の極端な信念すべてについて、それが存在すれば私を別の方法で説得するであろう、私が与えられる可能性のある情報があります。ExpoのためのExpo。悪いニュースがあります。Code KingのExpoは今Flutterをサポートしています。FlutterはFlutterアカウントからExpoを愛しています。
問題は、Theoがこれはまさにアイデンティティではないということです。私は技術について話していることの何もそうだとは思いません。確実にあるものはあります。正直なところ、Flutterのことは私にとってライン上にあると思います。私はFlutterを深く嫌っています。
それは、私にとって非常に難しいであろうことです。誰かが私に良いFlutterアプリを見せたら、彼らは私を少し実存的な恐怖の危機に送り込むでしょう。私が見つけたのは、誰かのサイドプロジェクトのように見える、1人か2人のチームの、大丈夫だったものが一つありました。何と呼ばれていたかな。wondrousだったと思います。
それは博物館のためのアプリの例で、大丈夫でした。他のソリューションでは簡単にできないような、本当にクールなアニメーションや物事がありました。それはかなりクールです。それは出荷されなかった新しいFlutterレンダリングエンジンを使用していることが判明しました。
それは主に、そのレンダリングエンジンのデモとして、コアFlutterチームの半分によって構築され、世界で最高のデザイン会社の一つに契約されました。彼らはランダムな博物館から6つの展示を示すこの小さなアプリで50人が働いていました。そしてそれは大丈夫でした。良くはありませんでした。まあまあでした。
そしてその時でさえ私は、「クソ、Flutterの見解を再考しなければならないのか」と思いました。そしてそれは決して出荷されませんでした。それから、それを機能させたものは何も出荷されませんでした。そしてFlutterチームの半分が解雇されました。だから、いいえ、再考する必要はありません。
しかし私は自分の中で深く、ああクソ、これを再考しなければならないのか、と感じました。だから理想的にはこれは私のアイデンティティの一部ではないでしょう。それがそうであるのは少しばかげています。愚かです。でも私はこれらのことを本当に気にしています。
それらは私にとって深いものです。しかし私はまた、自分が間違っている時を認識し、そこから離れることができるほど自閉症的でもあります。あなたの脳は、アイデンティティに基づく信念への挑戦を客観的に評価することはできません。なぜならそうすることは、あなたが誰であるかを定義する神経アーキテクチャを一時的に解体することを必要とするからです。その通りです。
それはより合理的であるとか、もっと頑張るという問題ではありません。バイアスを明確に見ることを可能にするメカニズムは、バイアスが損なった同じメカニズムです。その通りです。それは、これを見るために着けることができる眼鏡が、これによって黒く塗られているようなものです。だから機能しません。それは非常に理にかなっています。
実際にこれが何を意味するか考えてみてください。エンジニアが自分のものではない言語を評価するたびに、彼らの脳は文字通り彼らに対して働いています。彼らは技術的なトレードオフを分析しているだけではありません。彼らはまだ存在しない自分自身のバージョンを熟考しているのです。それは存在するバージョンにとって脅威的に感じられます。
Pythonデベロッパーは、Goのパフォーマンスに関するケーススタディを読み、彼らの扁桃体は静かにそれぞれを中和すべき脅威としてマークします。Rust支持者は同じ問題だけを見て、彼らのデフォルトモードネットワークは、Rustだけがそれらを解決できる理由についての物語を構築します。
私たちは嘘をついているのではありません。私たちは、自分の推論が健全だと本当に信じています。それがアイデンティティに基づく思考を非常に高価で、非常に見えないものにしているのです。その通りです。ここに追加することはもっとあればいいのですが。これは全て真実です。
それはまた、ええ、私はFlutterやReactなどに対してバイアスを持っていますが、平均的な開発者よりも代替オプションを検討していることを示しています。私は、Gleamを愛したかったです。本当にGleamを愛したかったです。Gleamは美しい言語です。Beamの上に構築されています。JSVMでも、JavaScript世界でも機能します。JSにコンパイルされます。超クールです。
Elixirから欠けていた一握りの小さなことがあり、それが私が全面的に取り組むのをはるかに難しくしました。それは美しい言語でした。大好きです。でもそれは私にとってライン上でした。私が本当に愛しているいくつかのものがちょうど欠けていました。そして私は結果的にそれについて特に深く入りませんでした。
その結果、ほとんどのエンジニアは、自分が知っているものとは異なる何かを深く探求する、これらのタイプの分析を行うのが本当に下手だと思います。しかしもしあなたがそれが得意になれば、あなたははるかに速くレベルアップするでしょう。私はTwitchに参加した時はPython畑の人間で、Flaskの奇妙なものをたくさんやっている奇妙なPythonの人から、Elixirに行きました。
それは厳しい移行でしたが、結局それに恋に落ち、それは核心的なアイデンティティのものの一つになりました。だからええ、これらのことを学ぶ時は、自分自身と自分自身のバイアスについて考えないようにベストを尽くしてください。そしてもし自分自身の異なるバージョンや他の誰かが完全にそれを学んでいると想像しなければならないなら、特定の言語が好きではなく、エンジニアリングをよく知っているが特定の言語をよく知らない誰かにとって、これはどのように役立つでしょうか。
彼らはこれにどのようにアプローチするでしょうか。何を見るでしょうか。何が好きでしょうか。何が嫌いでしょうか。そして、その人になろうとしてください。
業界が間違った会話を中心に構築された
私たちは業界を間違った会話を中心に構築しました。私たちは自分自身をPythonista、Gopher、Rustaceanと呼び、これらのラベルをバッジのように身につけています。時には、Tシャツやステッカーのような文字通りのバッジさえ身につけます。
私たちの姓の多くが人々の工芸から来ている理由があります。Potter、Smith、Brewer、Brown。明らかに、私たちがすることは私たちが誰であるかになります。装飾的なラベルのように見えるものは、実際には意識的思考の下で動作する意思決定フレームワークです。
私たちは業界全体を目に見える会話を中心に構築しました。私たちはエンジニアに技術的利点について議論するように訓練します。私は文字通り、ショートを作るために初めてストリームでQ&Aをやったばかりです。質問の半分は言語選択についてでした。まるで私が大学にいるかのように。
私はJSを知っています。彼らは大学でJSを教えません。PythonかC++かJavaを学ぶべきでしょうか。どれも重要ではありません。気にするのをやめてください。ただコードを書きに行ってください。物事を学びに行ってください。友達を作りに行ってください。何かをやってください。誰も気にしません。
私のチャットにいる私の親友の一人、Aidenは、私が書くであろうコードとは最も対照的なコードを書きます。私は彼が取り組んでいるものの中で働くことは決してないでしょう。Goを書くのは好きではありません。彼がやる方法でシステムを構築するのは好きではありません。次にKubernetesを扱わなければならない時は、引退します。それはただ私がいたい場所ではありません。
しかしあなた自身と意見が異なる人々、あなたとは異なることをする人々、そしてあなたと良い会話ができる人々に囲まれることは、あなたのキャリアのためにできる最高のことです。あなたは決して全てを学ぶことはできません。だから、あなたの信念に挑戦する他のことを学んだ人々に囲まれてください。そうすればあなたは物事を理解するためのフレームワークを構築でき、あなたの知識が特定の領域で意味をなさない時を知ることができます。
幸いにも私にはこの問題はありません。なぜならTypeScriptを使って文字通り全てをできるからです。Palumiを使ってTypeScriptでKubernetesとTerraformを置き換えることができます。Deno、Node、あるいはbunを使ってTypeScriptでバックエンドを書くことができます。TypeScriptでフロントエンドを書くことができます。まあ、TypeScriptでフロントエンドを書かなければなりません。
モバイルアプリもそれで書けます。だからなぜTypeScript以外のものを使うのでしょうか。明らかに私が正しいのです。他の皆が間違っています。とにかく、見えない会話は目に見えるものよりもはるかに強力です。それが私のCTOがPerlを選んだ理由です。それがその副社長がRustを選んだ理由であり、それはあなたの次の言語決定で今動いています。見えず、検証されていません。
Rust開発者を雇って言語を評価する瞬間、あなたは既にRustを選んでいます。あなたはただ、事前に決定された決定を合理的に感じさせるために200万ドルの可視性研究を追加しただけです。なんという名言でしょう。なんという名言でしょう。それは本当です。これのために誰を雇うべきか分かりません。なぜなら言語について本当に気にしない人はそれほど多くないからです。
クソ、私はUncleBobの支持者になろうとしているのか。いいえ、そうではありません。スクロールし続けます。
本当のコスト
本当のコスト。問題はバイアスが存在するかどうかではありません。科学は決定的です。本当の問題は、あなたはそれにあなたの決定をさせる余裕があるかということです。見えない会話には価格タグがあります。
業界の研究は、技術スタックの決定が製品のライフサイクルにわたる総開発コストの40から60パーセントを占めることを示唆しています。Stripeによる研究では、開発者は時間の42パーセントを技術的負債に費やしていることが分かりました。
アイデンティティに決定を駆動させると、あなたは他人の自己感覚のために、あなたの開発速度、あなたの予算、そしてあなたの滑走路を担保に入れています。その通りです。その通りです。目に見える会話は技術についてです。見えない会話はアイデンティティについてです。そして見えない会話は常に勝ちます。
では、見えない会話が常に私たちに対して働いている時、どのように勝つのでしょうか。私たちは会話を完全に変えなければなりません。どの言語が最高かを尋ねる代わりに、この言語は私たちに何のコストがかかるのかを尋ねる必要があります。給与ではなく、開発速度、技術的負債、採用の難しさ、運用の複雑さ、生き残るかどうかを実際に決定するあらゆる次元でです。
それを技術的議論から経済的なものに再構成してください。そしてアイデンティティとは異なり、経済学は測定され、比較され、誰のエゴも脅かされることなく決定されることができます。プログラミング言語を選ぶことは、あなたの会社が今までに行う最も高価な経済的決定です。
LLMコストについて聞くまで待ってください。実際にそうですが、私は、これは私が全体の中で同意しない唯一のピースです。他のほぼ全てについて、私は一致しています。言語選択はあなたの文化を定義し、予算を制約し、採用パイプラインを決定し、運用コストを設定し、最終的にはあなたが市場で勝つために十分速く動けるかどうかを決定します。
見えないコストを見えるようにするフレームワークが必要です。アイデンティティの会話の代わりに経済的会話をさせるもの。あなたが最初の言語を選んでいるか、移行を評価しているかに関わらず機能するもの。私たちの業界は、今までそのフレームワークを本当に持っていませんでした。おお。
著者の次の投稿は、言語の本当のコストの9つの要因になるでしょう。アイデンティティではなく経済学に基づいて言語決定を評価するための包括的なフレームワーク。あなたは隠れたコストを定量化する方法、長期的な影響を予測する方法、そしてチームが言語の好みに関わらず、その背後に整列できる防御可能な決定を行う方法を学びます。
これは本当に良い記事でした。特にSteve FranciaであるSPF 13に感謝します。これは素晴らしい読み物でした。このビデオの前半で言及すべきだったことは、SteveがGoogleでのGoの元の貢献者の一人だったということです。彼は言語の構築を助けました。そして彼はまだこれが全てナンセンスだと思っています。
Twitterで彼をフォローしてください。彼のブログに注目してください。あなたのサークルに入れておくべき良い人です。私を信じてください。いつものように、これを読みたい場合、彼の他のものを読みたい場合、もしかしたらあなたがこれを見る時までに、その言語フレームワークのための彼のフォローアップ記事が最終的に私たちが使えるようになっているかもしれません、この投稿へのリンクを説明欄に残しておきます。
そしてもしあなたが今これらの決定を行おうとしていて、まだ使えるこのフレームワークがないなら、私の推奨は少しばかげているように思えるかもしれませんが、私は以前これをやったことがあり、うまくいきます。
もしあなたに異なる言語や異なる技術を望む2人がいるなら、彼らに自分のソリューションが正しい理由を説明させる代わりに、他のソリューションが正しい理由を説明させてください。それぞれに、他のソリューションが正しい理由についてのプレゼンテーションを強制してください。
そしてもし彼らがそれをするのに苦労したり、意図的に自分が好きではないものをより悪く見せようとしたりするなら、あなたにはその人を解雇する信じられない理由があります。しかしもし彼らがこれを上手にやるなら、問題は自己解決するでしょう。人々に、彼らが同意しないものを売り込ませてください。そうすれば彼らはそのことについてはるかによく学びます。そしてその後に会話を起こさせてください。
結果ははるかに良くなるでしょう。なぜならあなたは彼らに自分のアイデンティティから踏み出し、異なる人を想像することを強制するからです。そして最終的に、このクソは何も重要ではありません。ただあなたが満足しているものを選んでください。出荷して仕事に戻ってください。
もしあなたの言語があなたがやっていることに対して遅すぎることが判明したら、正しいものを使ってそれを高速化してから、またクソ仕事に戻ってください。あなたが既に使っている技術はおそらく十分良いです。本当に、本当にそうしなければならない場合を除いて、このクソについてそんなに心配するのをやめてください。
あるいはLLMに決めてもらうように頼んでください。もう知りません。皆さんがどう思うか教えてください。私はこれを過大評価しているのでしょうか、それとも言語の会話は実際にこれほど愚かなのでしょうか。皆さんがどう思うか教えてください。


コメント