1つ目の質問については、経済学の「比較優位」という概念である程度説明できると考えています。

ソフトウェア開発プロジェクトにはいろいろな分野のタスクがあります。それぞれの人には得意な分野とそれほど得意でない分野があるはずです。

例えば、ソフトウェアエンジニアのAさんはデータベースが得意分野で、ソフトウェアエンジニアBさんはUIのプログラミングが得意分野だとしましょう。データベース分野ではAさんはBさんの10倍のアウトプットを出せるとします。逆にUI分野ではBさんはAさんの2倍のアウトプットを出せるとします。

ここで問題になるのは、AさんにBさんの何倍の収入を渡すのが妥当なのかということです。その会社やプロダクトにとってデータベースとUIの両分野の重要性がそれなりに高ければ、10倍にはならないはずです。

端的に言うとそういう計算がなされているのだと思います。

その他にも

  • 誰が担当してもアウトプットの効率があまり変わらない労働集約的なタスクがたくさんある。

  • 優秀な人が休暇に入ったり退社したときのバックアップのため他の人も雇う必要がある。

  • 給料は他の会社との競争で決まる。

  • 給料の下限は所在地の生活コストで決まる。

などの要因も関係していると思います。

ちなみに levels.fyi のデータによると、SFベイエリアでは上位1%ちょうどの人は中央値の人の2.5倍程度の収入を得ているようです。

https://www.levels.fyi/Salaries/Software-Engineer/San-Francisco-Bay-Area/

2つ目の質問にお答えします。

一番重要なのは昇進の機会をきちんと与えることです。US ではソフトウェアエンジニアには SWE → Senior SWE → Staff SWE というように専門家として昇進していくキャリアパスが用意されていて、マネージャーのキャリアパスとは完全に別になっています。マネージャーはどうすれば上の職位に昇進できるのかということを実行可能なアクションプランに落とし込んで各人に繰り返し伝えます。きちんと昇進するパスがある会社では優秀な人は成果を出して昇進していくので、キャリアに対する満足度が高くなり離職率が下がることが知られています。

その次に重要なのは、いい成果を出したときにどれだけ社内で広く認知されるかというポイントだと思います。いい成果を出したら社内で多くの人が認知してくれる機会がある環境では離職率が低くなることが知られています。いい成果を出した人がいると、マネージャーはその成果をチーム外に認知してもらえるように、大きなミーティングで発表する段取りをしてくれたりなど、できるだけサポートしてくれます。

その他にも

  • 1人のマネージャーの下につく人の数を制限する

  • マネージャーとの 1 on 1 はできるだけ毎週、最低でも隔週で行う

  • 四半期ごとにチームビルディングのイベントを行う (もちろん業務時間内に)

というようなことも行われていて、それなりに効果があるものと思われます。

3y

Please read and agree to the Terms of Service and Privacy Policy before using.

Past comments by Satoshi Nakagawa
    Loading...