11 ポイント 投稿者 GN⁺ 2025-03-14 | 3件のコメント | WhatsAppで共有
  • ソフトウェア業界には、同僚より10倍生産的だという、いわゆる「10xエンジニア」の神話が存在する
  • しかしこの概念は根拠が乏しく、偏見を強めたり、非現実的な基準を設定したりする危険がある

生産性の測定は複雑で不完全

  • 生産性をどう測るのか?
    • エンジニアが扱う分野は多様である: マイクロプロセッサ、IoT、データベース、Webサービス、UX など
    • 使用する言語やフレームワークも多様である: Golang、Python、COBOL、Lisp など
    • 隣接する技術、市場、製品に関する専門知識も必要である: セキュリティ、データ可視化、マーケティング、財務 など
    • 開発段階や製品の規模も異なる: 火星探査ローバーなのか、単純なソフトウェアなのかによって異なる
  • 技術は変化する
    • 過去に優れていたエンジニアでも、時間が経つにつれて特定技術では後れを取ることがある
    • ある分野で「10倍エンジニア」だったとしても、別の分野では平均レベルかもしれない

ソフトウェアはエンジニアではなくチームが所有する

  • ソフトウェアの品質は個人の成果ではなく、チームの成果によって決まる
  • 個人がどれだけ速くコードを書いても、チームのプロセスが遅ければ結果として速度は同じになる
  • コード作成よりも、テスト、レビュー、デプロイ、保守に多くの時間がかかる
  • 特定のエンジニアがソフトウェアの所有権を持つと、そのエンジニアがいなくなった場合に大きなリスクが生じる
  • チーム中心のソフトウェア開発構造のほうが、長期的により安定している

最高のエンジニアリング組織とは、「普通」のエンジニアが優れた成果を出せる場所である

  • 最高のエンジニアリング組織は、必ずしも優秀なエンジニアだけで構成されている場所ではない
  • 普通のエンジニアが、日常的に良い成果を出し、継続的に製品とビジネスを発展させられる環境が重要である
  • チームがシステムを理解し、コードのデプロイ、ユーザー対応、問題解決を日常的に実行できなければならない
  • 最高のエンジニアリング組織は、普通のエンジニアが成長し、成果を出せる環境である

「普通」のエンジニアの重要性

  • ソフトウェア業界は「賢い人」を重視する傾向が強い
  • Netflixは「上位10%」の人材を、Coinbaseは「上位0.1%」の人材を好むと明らかにしている
  • しかし、ほとんどの人は普通である普通の人が成果を出せるシステムが必要である
  • ソフトウェアエンジニアは生まれつきのものではなく、訓練と経験によって成長する

「普通の人」のためのソシオテクニカル・システム構築

  • システムは「普通の人」が簡単に使えるように設計されるべきである
  • 一般的な人間の特性を考慮する必要がある:
    • 確証バイアス、直近バイアス、ハロー効果などの認知バイアスが存在する
    • 疲労感や感情の状態が成果に影響する
    • アラームが午前3時に鳴れば、午後3時よりもエラーが発生しやすい
  • システムが直感的で使いやすければ、エンジニアのエネルギーを製品改善に集中させられる

優れたエンジニア組織は世界水準のエンジニアを育てる

  • 優れたエンジニアリング組織とは、優れた人材を保有している場所ではなく、普通のエンジニアが成長できる場所である
  • 良い組織では、平均的なレベルのエンジニアでも継続的に成果を出し、成長できる
  • 最高のエンジニアは、そのような環境から自然に生まれる

「最高の人」より「適した人」を採用すべき

  • 「最高の人材」よりも、「私たちのチームに適した人材」を見つけることが重要である
  • システムは個人の成果よりもチームの成果を促進すべきである
  • 個別の成果よりも、チームワークと協業が重要な環境が必要である
  • 包摂的で公正な文化は成果を高め、多様な背景を持つエンジニアが成長できる機会を提供する

結論

  • 「10倍エンジニア」は現実に存在しうるが、それをチームの成果と結びつけるのは難しく、危険でもある
  • 優れたエンジニア組織とは、少数の天才ではなく、普通のエンジニアが成果を出せる構造を備えた場所である
  • システムは個人の成果よりもチームの成果を強化すべきである
  • 包摂的な文化とシステムを通じて、普通のエンジニアが成長し、成果を出せる環境こそが核心である

3件のコメント

 
iolothebard 2025-03-20

100倍エンジニアだけが集まっている会社では、100倍エンジニアが普通です。普通が重要です。普通の基準まで引き上げることは、さらに重要であり…

 
felizgeek 2025-03-16

スティーブ・ジョブズなどの人たちが語っていた10倍、100倍のSWエンジニアとは、以下のような意味だと考えています。
建設労働や配達、運転のような仕事では、最も優れた熟練者でも普通の人より2倍以上の効率を出すのは難しいです。しかし、SWや金融のような分野では、優秀な人は平凡な人100人でも絶対に出せない成果物を生み出すことがあります。

人材育成の教育は重要ですが、人材の選抜も重要です。教育と選抜の間には大きな違いがあるように思います。両者を混ぜて混同してはいけません。

 
GN⁺ 2025-03-14
Hacker Newsの意見
  • ソフトウェアエンジニアリングが特別だという考えは、有害になりがちな傾向がある

    • 金融分野と似ていて、個人の価値を過大評価する傾向がある
    • きちんと仕事をして退勤することが重要であり、過度な労働時間はシステムの脆弱性を示している
    • 着実で慎重な努力が重要である
  • 「普通の」エンジニアというものは存在せず、さまざまなレベルの開発者がいる

    • 優れたチームを作るには、有能なエンジニアが必要である
    • しかし、そのようなエンジニアを見つけるのは難しい
  • ソフトウェアはチームではなく個人が開発する

    • 複雑なプロジェクトは、通常一人の優れた人が主導する
    • チームを構成することは絶え間ない挑戦である
  • 労働者階級の非人間化や分類に反対する

    • 優れたチームの核心は優れたリーダーシップである
    • チームがあってこそ、リーダーは存在できる
  • IEEEがクリックベイトのような内容を扱っていることに失望する

    • 生産性を測定する方法について誤解がある
    • 「普通の」ソフトウェアエンジニアという概念に疑問を抱く
  • 10倍エンジニアは創造的で、ユーザー体験とコードの保守性に気を配る

    • 1倍の開発者は結果だけを重視し、対立を招く
  • 10倍エンジニアという概念は誇張されているが、多くの仕事をこなす少数の人は存在する

    • 報酬が比例しないにもかかわらず仕事に没頭する理由は、理解しにくい
  • エンジニアリングの仕事は、他の職業とは異なる特性を持つ

    • 成果はエンジニアと製品の組み合わせの属性である
    • 成果を定量化するのは難しい
  • 他人と比べて無力感を覚えることがある

    • 問題を解決するときに自信を取り戻す
    • 生産性は明確な目標があるときに高まる
    • 速さは魔法ではなく、特定のやり方で実現される
  • 多くのエンジニアはお金のために働いており、情熱がなければ優れたエンジニアになるのは難しい

    • 個々のスキルは練習と才能の影響を受ける
    • 経験は知能よりも役に立つことがある