- ソフトウェア業界には、同僚より10倍生産的だという、いわゆる「10xエンジニア」の神話が存在する
- しかしこの概念は根拠が乏しく、偏見を強めたり、非現実的な基準を設定したりする危険がある
生産性の測定は複雑で不完全
- 生産性をどう測るのか?
- エンジニアが扱う分野は多様である: マイクロプロセッサ、IoT、データベース、Webサービス、UX など
- 使用する言語やフレームワークも多様である: Golang、Python、COBOL、Lisp など
- 隣接する技術、市場、製品に関する専門知識も必要である: セキュリティ、データ可視化、マーケティング、財務 など
- 開発段階や製品の規模も異なる: 火星探査ローバーなのか、単純なソフトウェアなのかによって異なる
- 技術は変化する
- 過去に優れていたエンジニアでも、時間が経つにつれて特定技術では後れを取ることがある
- ある分野で「10倍エンジニア」だったとしても、別の分野では平均レベルかもしれない
ソフトウェアはエンジニアではなくチームが所有する
- ソフトウェアの品質は個人の成果ではなく、チームの成果によって決まる
- 個人がどれだけ速くコードを書いても、チームのプロセスが遅ければ結果として速度は同じになる
- コード作成よりも、テスト、レビュー、デプロイ、保守に多くの時間がかかる
- 特定のエンジニアがソフトウェアの所有権を持つと、そのエンジニアがいなくなった場合に大きなリスクが生じる
- チーム中心のソフトウェア開発構造のほうが、長期的により安定している
最高のエンジニアリング組織とは、「普通」のエンジニアが優れた成果を出せる場所である
- 最高のエンジニアリング組織は、必ずしも優秀なエンジニアだけで構成されている場所ではない
- 普通のエンジニアが、日常的に良い成果を出し、継続的に製品とビジネスを発展させられる環境が重要である
- チームがシステムを理解し、コードのデプロイ、ユーザー対応、問題解決を日常的に実行できなければならない
- 最高のエンジニアリング組織は、普通のエンジニアが成長し、成果を出せる環境である
「普通」のエンジニアの重要性
- ソフトウェア業界は「賢い人」を重視する傾向が強い
- Netflixは「上位10%」の人材を、Coinbaseは「上位0.1%」の人材を好むと明らかにしている
- しかし、ほとんどの人は普通である → 普通の人が成果を出せるシステムが必要である
- ソフトウェアエンジニアは生まれつきのものではなく、訓練と経験によって成長する
「普通の人」のためのソシオテクニカル・システム構築
- システムは「普通の人」が簡単に使えるように設計されるべきである
- 一般的な人間の特性を考慮する必要がある:
- 確証バイアス、直近バイアス、ハロー効果などの認知バイアスが存在する
- 疲労感や感情の状態が成果に影響する
- アラームが午前3時に鳴れば、午後3時よりもエラーが発生しやすい
- システムが直感的で使いやすければ、エンジニアのエネルギーを製品改善に集中させられる
優れたエンジニア組織は世界水準のエンジニアを育てる
- 優れたエンジニアリング組織とは、優れた人材を保有している場所ではなく、普通のエンジニアが成長できる場所である
- 良い組織では、平均的なレベルのエンジニアでも継続的に成果を出し、成長できる
- 最高のエンジニアは、そのような環境から自然に生まれる
「最高の人」より「適した人」を採用すべき
- 「最高の人材」よりも、「私たちのチームに適した人材」を見つけることが重要である
- システムは個人の成果よりもチームの成果を促進すべきである
- 個別の成果よりも、チームワークと協業が重要な環境が必要である
- 包摂的で公正な文化は成果を高め、多様な背景を持つエンジニアが成長できる機会を提供する
結論
- 「10倍エンジニア」は現実に存在しうるが、それをチームの成果と結びつけるのは難しく、危険でもある
- 優れたエンジニア組織とは、少数の天才ではなく、普通のエンジニアが成果を出せる構造を備えた場所である
- システムは個人の成果よりもチームの成果を強化すべきである
- 包摂的な文化とシステムを通じて、普通のエンジニアが成長し、成果を出せる環境こそが核心である
3件のコメント
100倍エンジニアだけが集まっている会社では、100倍エンジニアが普通です。普通が重要です。普通の基準まで引き上げることは、さらに重要であり…
スティーブ・ジョブズなどの人たちが語っていた10倍、100倍のSWエンジニアとは、以下のような意味だと考えています。
建設労働や配達、運転のような仕事では、最も優れた熟練者でも普通の人より2倍以上の効率を出すのは難しいです。しかし、SWや金融のような分野では、優秀な人は平凡な人100人でも絶対に出せない成果物を生み出すことがあります。
人材育成の教育は重要ですが、人材の選抜も重要です。教育と選抜の間には大きな違いがあるように思います。両者を混ぜて混同してはいけません。
Hacker Newsの意見
ソフトウェアエンジニアリングが特別だという考えは、有害になりがちな傾向がある
「普通の」エンジニアというものは存在せず、さまざまなレベルの開発者がいる
ソフトウェアはチームではなく個人が開発する
労働者階級の非人間化や分類に反対する
IEEEがクリックベイトのような内容を扱っていることに失望する
10倍エンジニアは創造的で、ユーザー体験とコードの保守性に気を配る
10倍エンジニアという概念は誇張されているが、多くの仕事をこなす少数の人は存在する
エンジニアリングの仕事は、他の職業とは異なる特性を持つ
他人と比べて無力感を覚えることがある
多くのエンジニアはお金のために働いており、情熱がなければ優れたエンジニアになるのは難しい