ハクソク

世界を動かす技術を、日本語で。

ソフトウェアエンジニアは少し皮肉を持つべきだ

概要

  • 大手テック企業で働くエンジニアの現実と理想についての考察
  • シニシズム(皮肉・冷笑)の必要性とその限度に関する議論
  • 理想主義的な見方とシニカルな見方の対比
  • 組織運営や意思決定の裏側に潜む現実
  • 健全なシニシズムがエンジニアのキャリアや成果に与える影響

大手テック企業のエンジニアはシニックか?

  • 読者から「シニック(皮肉屋)」と呼ばれる理由の説明
  • 上司を喜ばせるべき」「大手企業はプロジェクトを決める権限を持つ」という主張
  • Alex Wennerbergの「Software Engineers Are Not Politicians」からの引用
    • 上記のアドバイスは組織内での立ち回りには有効だが、「価値観の喪失」を招く懸念
    • エンジニアは単なる「政治ゲームの駒」ではなく、専門性を持ち意義ある問題を解決する職業
    • 上司の指示に従うだけの働き方は「良い仕事」には繋がらないという批判

理想主義とシニシズムの対立

  • ソフトウェアエンジニアリングにおける理想主義的な見方
    • 大企業は支配欲しかない」「エンジニアは搾取されるだけ」などの極端な主張
    • 本当に倫理的なエンジニアは「上司に逆らってでも良いものを作るべき」という思想
    • この見方自体が実は「非常にシニカル」であることの指摘
  • 現実的な見方の必要性
    • 経営層も「良いソフトウェアを届けたい」と考えている場合が多い
    • ただし、個々のエンジニアが「妥協」を求められる現実も否定できない

シニシズムは理想主義より理想的か?

  • 政治ゲームの駒」と「意義ある問題の解決者」の二分法は実際には曖昧
  • 大規模なプロダクト改善には「社内調整(政治)」が不可欠
  • エンジニアは「会社の方向性を直接決める立場ではない」が、「技術的変化を実現する影響力」は持つ
  • GitHubの例:LaTeX対応などは多くの人との協調が必要
  • 政治的プロセスに関わること自体が理想主義的行動」という見方
    • 公務員と同様、全体最適を目指して働く理想主義

シニシズムはワクチンのようなもの

  • 適度なシニシズム」は思考をクリアにし、過度なシニシズムを防ぐ効果
  • エンジニアが悪いコードを書く理由を「少しシニカルに説明」できないと、逆に「極端にシニカルな陰謀論」に陥るリスク
    • 例:労働組合対策のためにエンジニアを意図的に落胆させている、など
    • 実際は「普通の組織運営」や「人材のバラつき」が原因

理想主義的な文章が多すぎる問題

  • ソフトウェアエンジニアリングに関する文章は「理想主義的な内容」が多い
    • 良いコードを書くべき、同僚に親切にすべき、社会的意義のあるプロジェクトに取り組むべき、など
  • 一方で「現実を正確に描写した文章」が少ない
  • シニカルな文章も人を傷つけるが、理想主義的な文章も害を与える可能性
    • 2010年代のエンジニアが現実と乖離したモデルを持ち、2020年代に苦しむケース
    • 正しいモデルを持つことで「理想の実現」にも近づく

倫理観と現実のバランス

  • 「Microsoftなどの企業で働くことの倫理性」は本記事の主題ではない
  • 私が主張したいのは「大手テック企業は無能である」というシニシズム
  • 経営層が「自己犠牲で良いソフトウェアを作ることを優先しない」のは事実
    • しかし、良いソフトウェアは会社の利益にも繋がるため、全てがゼロサムではない
  • 企業は従業員を意図的に不幸にしている」という陰謀論には懐疑的
    • 実際には「従業員が辞めずに安く働くよう工夫している」だけ

まとめ

  • シニシズムと理想主義のバランスを取ることの重要性
  • 現実を正しく理解すること」がエンジニア自身の理想実現にも役立つ
  • 過度な理想主義も過度なシニシズムも避けるべき
  • 健全なシニシズム」のすすめ

Hackerたちの意見

ちょっと顔を出して、ショーンがここで言ってることは完全に正しいと思うって言いたかったんだ。職場で超シニカルな見方を試してみたけど、彼が言うように「理想主義」を取り入れた方が結果が良かったと思う。理想主義は、クリアなシニシズムの上に立つより効果的なアクションだってね。ただ、実際に社会を良くするための戦略には意見の食い違いがあると思う。ショーンが言ってることは、従業員でいる必要があるなら正しいけど、多くの人はそうする必要がないから、片足でサッカーを勝つ方法を教えてるみたいに感じる。両足を使えばいいじゃん!特にここ1年の経験から、ほとんどの会社で従業員としての立場だと、ほとんど無関係になっちゃうって感じてる。新しい立場を取るべきだし(例えば、僕みたいにサードパーティのコンサルタントになるとか)、ほぼ完璧に運営されてる場所を見つけるべきだと思う。CTOやCEO、または取締役の役割を与えられない限り、フルタイムの仕事に戻るなんて考えられないな。自分の裁量で動けるような役割があれば別だけど…多分、最悪な場所では、そういう役割でもあまり意味がないんじゃないかな。あと、ショーン、これを読んでたら、3月前に一緒にコーヒー飲もうね、死ぬ気で頑張るから。
> 職場で超シニカルな見方を試してみたけど、彼が言うように「理想主義」を取り入れた方が結果が良かったと思う。シニックな人は賢いと感じるけど、楽観主義者が勝つんだよ。少しでも楽観的でいる必要があるし、時にはナイーブであることも大事だよね。そうしないと、運を引き寄せるためのエネルギーを十分に注げないから。
> ソフトウェアエンジニアが大手テック企業で動かしているわけではないのは明らかな事実だよ。彼らは会社の方向性を決めるわけじゃない。政治的な影響力があるとすれば、それは会社の方向性を具体的な技術的変更に翻訳することにある。でも、それって実際にはかなりの影響力だよね!この見方を「シニカル」または「理想主義」と呼ぶかは分からないけど、バランスが取れているし、真実が多いと思う。ソフトウェアエンジニアとして、ただの「仕事をしているだけのロボット」じゃないんだ。物事をどうやってやるべきか、あるいはそれをやるべきかどうかの判断が、エンドユーザーや社会全体にとってどれだけ有用で有益な製品になるかに影響を与えるんだよ。
著者はいい人そうだけど、大手テック企業が従業員を潰すためにどれだけの努力をしているかについては少しナイーブかもしれないね。彼は大手テック企業のスタッフレベルのエンジニアのようだけど、どれくらいの給料をもらっているかは分からないけど、すごい額だと思う。彼が働いている組織は、監視や独占的な搾取、特に人気のない戦争に関わる現在の軍事行動に関与している。誰も彼をこの役割に強制したわけじゃないし、他の場所で少ないお金を稼ぐこともできたはずなのに、そうしなかった。彼は、機能不全の大きな機械の歯車になることを選んで、そのためにしっかり報酬を得ている。この犠牲は、多くの人にとっては価値のある取引なんだよね。もし自分の職業の道徳的な影響に関わりたくないなら、一般的にはそれを避けることが許される。ただし、その職業が合法であればの話だけど。残念ながら、その上で自分の立場を守るために「私がやっていることは実際に良い」と言いながら、高額な6〜7桁の給料をもらっているのは矛盾しているよね。腐敗した独占的な装置の中で政治的な行動を取ることは経済的には利益があるけど、それが充実した人生への道だとは受け入れたくないな。
エバーグリーン:給料がそれを理解しないことに依存しているとき、男に何かを理解させるのは難しい。 - アプトン・シンクレア
あの人はGitHubで働いてるんだよね。そこに腐ったコードがあるのは疑わないけど、君が言ってることはちょっと無理があるし、彼が説明していることそのものだと思う。
自分は道徳的に受け入れられる(むしろ感動的な)ことをしている会社でキャリアの大半を過ごすことにした。もっと怪しい場所で稼げたはずだけど、その半分くらいの給料だったと思う。それを言うと、テック業界の多くの人から軽蔑や嘲笑を受けることが分かった。まあ、いいや。自分はそれで大丈夫だけど、他の多くの人がそうじゃないのは不思議だね。
企業同士が互いの優秀な人材を奪わないように合意することを「従業員を潰す手段」として捉えるのは、かなり信用を失わせるよね。反トラスト訴訟には感謝してる。これは明らかに、関係者全員にとって自己利益のための共謀だったと思うし、彼らにとっての負の囚人のジレンマ的な状況を乗り越えるための手段だった。賃金成長が抑制されたのは、歓迎すべき副作用だったけど、それを意図した結果として元の著者を貶めるのはちょっとおかしいよね。企業って単純に利益を追求する存在だと思ってるけど、その行動は理想的な社会的結果に向けてモデル化したり規制したりできるんだよね。GitHubはどんな軍事行動に関わってるの?
全くその通りだと思う。私もテック業界で働いてるけど、かなりシニカルだから、著者の投稿を自己宣伝や自己慰安の組み合わせとしてしか見れないんだよね。
シリコンバレーで25年過ごして、100%オープンソースソフトウェアの実現に取り組んできた。90%は非営利団体のために働いてたけど、初期の仲間たちは2005年から2010年にかけてほとんどがビッグテックに移っていった。彼らは私の2倍以上の給料をもらってるし、中にはそれ以上の人もいた。でも、私はそれができなかった。魅力的だったけど、約10年かけてその誘惑に乗るべきかずっと悩んでた。でも結局、世界で最悪の企業のために働く自分を受け入れられないって気づいた。意味のある遺産は残せないけど、ビッグテックをさらに大きく、さらに悪にする手助けをしたって知って死ぬよりはマシだと思う。もし子供がいたら、考え方が変わってたかもしれない。彼らの未来のために良心を犠牲にする動機があったかもしれないけど、私はいなかったから、自分が自分を受け入れられるかどうかだけを考えた。答えはノーだった。シリコンバレーでもビッグテック以外に十分に良い、しかも高給のソフトウェアの仕事はあったし、生活費を稼いで良い退職金のために魂を犠牲にする必要はなかった。誘惑に乗った人を恨むつもりはないけど、自分がノーと言えたことには満足してる。
すべての開発者が自分の会社が犯す道徳的な過ちに完全に責任を持つべきだと主張するのは、ちょっと行き過ぎだと思う。大きな組織から世界にポジティブな影響を与えることは十分可能だし、実際にそれが最も直接的な方法である人もいるかもしれない。「彼が道徳的に破綻している」と言うのは、今の政権がひどいからアメリカに住み続けているあなたが道徳的に破綻していると言っているようなものだ。アメリカに住むのは経済的に利益があるし、ここに住むことで6桁のチェックを手に入れる(生活の質が大幅に向上することの金銭的価値を考えてみて)ことができる。どうして出て行かないの? 私は、留まることを正当化するために頭の中を巡る計算は、彼がビッグテックで働き続けることを考えるときの計算とほぼ同じだと思う。どちらも正当化する理由があるから、間違っているとは思わない。
なんでも政治的にしない方がいいよね。どっちの立場にも立たないけど、著者は製品を作るときの政治についてだけ言ってると思う。会社がその製品から得たお金で何をするかっていう広い政治的・道徳的な問題には触れてないと思うんだ。彼らの投稿は後者を擁護しているわけでもないし、言及しているとも思えない。
イギリス人だから、デフォルトでシニカルなんだ。アメリカのエンジニアが会社に何度もひどい目に遭わされているのを見ていると、命令系統を信じ続けるのが不思議だよ。でも、良いシニックでいるためには、広いビジネスの動きや考えを把握するための豊富な情報ネットワークが必要なんだ。ビジネスの動機を理解しないと、正しくシニカルになれないからね。
>アメリカのエンジニアたちが会社から何度もひどい扱いを受けているのに、まだ指揮系統を信じているのは本当に不思議だよね。でも、彼らは給料が一番高いし、みんなアメリカに移りたがってるからね。
> 企業のCスタッフをこういう風に見るのはシニカルだね。私の限られた経験から言うと、大きなテック企業を運営している人たちは本当にユーザーに良いソフトウェアを届けたいと思ってる。私はこの意見には強く反対だ。Cスタッフが気にしてるのは株主価値だし、中間管理職が気にしてるのはエンパイアビルディングや昇進だ。 > 例えば、GitHubの1億5000万人のユーザーがMarkdownでLaTeXを使えるようにするには、会社の他の多くの人と調整する必要があるから、政治に関わることになる。あなたの主張は誤解を招く形で提示されてる。これは政治というよりも、協力やコミュニケーションだと私は考える。政治とは、昇進のために無駄なボックスをチェックしたり、手伝ってない仕事のクレジットを取ろうとしたり、同僚を裏切ったり、マネージャーが自分を良い子だと思っているから不当な評価を受けたりすることだ。もっと色々あるけど、あなたの前のブログは読んでないけど、エンジニアが政治と呼ぶものはこういうことなんだ。
誰かが「良い」と言う言葉を使うときは、常に疑ってかかる価値があるよね。大きなテック企業を運営してる人たちの中には「良いソフトウェア」を届けたいと思ってる人もいるだろうけど、その「良い」というのは意味がなくて曖昧すぎるから、真実であってもあまり重要じゃない。会ったことのないCスイートの人たちの動機については言えないけど、私の「良いソフトウェア」の考え方は彼らとは全然違うって言える。
> あなたの主張は誤解を招く形で提示されてる。これは政治というよりも、協力やコミュニケーションだ。協力とコミュニケーションは政治の重要な部分だけどね。政治の本質は、単に人々のグループ内のダイナミクスだから。私たちは本能的にヒエラルキーを作るし、権力や富、名声は多くの人に魅力的だから、これが必然的に心理戦や緊張、対立を生むんだ。でも、組織内で何かを達成するためには、ある程度の政治が必要になる。これを嫌だと思って避けようとするのはいいけど、それが私たちの社会の現実なんだ。こういうゲームをうまくプレイする人が最も大きな影響を持ち、報われる。そうでない人は影響が少なく、しばしば見落とされることが多い。
これはちょっとセマンティクスのように感じる。大きなことを成し遂げるには、コンセンサスを築いて(何を作るか、どのリソースをどれだけ割り当てるかについて)インセンティブを合わせる必要がある。多くの場合、これらのことはまず関係を築いて信頼を得ることが必要だと思う。私はこれらのすべてを政治の一部だと考えるけど、あなたの定義は悪い部分だけを含んでいるように見える。
政治とは、組織内で政治的資本を蓄積し、活用することだよ。もっと具体的に言うと、人間関係を築いてそれを使うこと。あなたが説明しているのは、不安定で絶望的、または自己中心的な人々が行う特定の形の操作的で分裂的な政治だ。多くのエンジニアは人間関係を築くのが得意じゃない(結局、コーディングの仕事はそれには最適じゃないからね)。だから、得意な人を自己愛的に描くのは、安心感を与えるかもしれないけど、正しくないよ。
そのジレンマが理解できない。エンジニアとして雇われる理由は、雇い主の仕事を楽にすることを期待されているから。世界を救うためでもなく、「正しいこと」をするためでもなく(それが何を意味するかはさておき)、ただマネージャーを助けるためだよ。面接のときに、自分が何を担当するかの大まかなイメージを掴む機会があった。もし組織やミッションが自分の価値観と合わなくなるほど変わったら、他の場所で働いている元同僚に連絡を取り始める。じゃあ、何が面白いの?
その通りだね。営利企業の従業員でいる限り、ずっとそういうもんだよ。会社が求めることをやって、その対価としてお金をもらう。これは「後期」の何かじゃなくて、ずっとこうだった。世界を救いたいなら、ピースコープに参加するか、少なくとも非営利団体に行くべきだよ。
これは後期のテクノロジーの結果だね。少数の人しかうまく動かせなかった頃、できる人たちは放っておかれていた。でも、仕事がルーチン化すると、管理や政治的な優先事項が支配し始める。これは他のテクノロジーが成熟する過程でも起こった。橋、電力、ラジオ。ローブリングやトゥイードリング、ブルックリン橋の話は知っておく価値があるよ。トゥイードは技術の歴史の初期に早すぎる段階で盗もうとして、大失敗した。ソフトウェアも昔に同じことが起こった。半導体は、ムーアの法則に追いつくことが政治を支配したから、あまり影響を受けなかった。テクノロジーの歴史をもっと学ぶと、このパターンが再現されるのがわかる。
こういうシニカルvs理想主義vs楽観主義の考え方が誰に通じるのかはわからないけど、私には何の概念的な優位性も与えてくれない。気分や感情で物事を考えようとするより、起こりそうなことと起こりにくいことを理解する方がいい。大企業は対立するインセンティブを持つ人々の集まりで、だから特定のタスクを実行するのが基本的に無理なんだ。逆に、インセンティブが一致したときは、他の企業や政府が反対していても、あるタスクが完了する可能性が高い。そういうタスクは、特定の品質の製品を作ることや、自分の目標を進めることかもしれない。だから、まず何が起こりそうで、何が起こりにくいかを考えるのが一番だよ。組織を、正しく理解すれば利用できる現象の一つとして考える必要がある。でも、複雑な人間のシステムをどう操るかは未解決の問題で、もし誰かが効果的で再現可能な解決策を持っていたら、投資家はそれを実行するよう求めるはず。現実として、ほとんどの企業は投資家の利益に沿って行動しているわけではない。唯一確実に言えるのは、すべての組織は長く存続すればするほど、そして大きくなればなるほど、機能不全の官僚主義に向かうってこと。
用語が間違っていると思う。著者はシニシズムとリアリズムを混同しているようだ。シニシズムは特定の特性で、常にネガティブな意味合いを持つ。定義上、社会構造にとって「良い」ことはありえない。リアリズムは中立的だ。でも、リアリズムがシニシズムを含意することが多いと仮定することがあるけど、それは間違いだ。パレシア(タクト)は態度に関して唯一価値のある長期的な目標だし、それにはシニシズムは含まれない。自分を裏切ることなく正直でいることが大事なんだ。「タクトは、敵を作らずにポイントを伝える技術だ。」 - (たぶん)アイザック・ニュートン
これはただの対処メカニズムだね。Cレベルの人たちが彼らが宣伝している技術を全く理解していないことはわかっているし、ある時点で彼らと同じくらい権力欲の強い中間管理職をたくさん承認してしまうから、現場からトップへのフィードバックループが遮断される。これら二つの災害が会社の運命を決定づける。もしあなたの会社がまだこれらに感染していないなら、彼らに対して「プラウザブル・デナイアビリティ」や「監視」などの言い訳を使えるかもしれないし、確かに彼らも人間だけど。でも、彼らの目を見て、権力への欲望しか見えないなら、それは有害な会社だし、「健康的なシニシズム」なんて役に立たないよ。
投稿が理解してないのは、大企業の「トップ」たちが普通のユーザーのことを全然わかってないってことだよ。だって、彼らは普通のユーザーとは全然違う生活をしてるから。
ほとんどのソフトウェア開発者も同じだよね。