この記事は意見の主張でもなく、正しいとか正しくないとかでもなく、単純にただ私が思うことを熟々と綴っただけの随筆です。
そして先に断っておきますと、私はコーディングが好きですし、書きたい気持ちもあります。 また、エンジニアであればどのようなラダーになってもコードを触る機会を作るべきだという意見にも賛成です。
ここで念頭に置いているのは、一日の大半をコーディングに当てるような仕事をしながら、昇給を目指すケースについてです。
このテーマで悩んでいる人はよく見かけます。 エンジニアリングマネージャの中にも、そういうキャリアが必要なのではないかと考えている人がいます。 この悩みの本質は、コードを書く仕事ができないということではなく、コードを書く仕事でより高い賃金を得られないという点だと考えています。 ここでは、RSUなどによって自己の資産が増加しているようなケースは除外します。
まず、仕事とは何かについて私の認識を明確にしておく必要があります。 人によって違うと思いますが、仕事を労働によって対価を得る活動とした場合、事実として仕事は「誰かのためにすること」であると私は思います。 でなければ価値交換として対価を得られません。 自身の楽しみや満足は、その次だと考えています。 求めてはいけないということではなく、優先度が顧客の楽しみや満足よりも低いということです。
この前提で、コードを書きたいということについて考えてみます。 コードを書きたい理由が自身の楽しみのためだとしたら、先の理由から優先度を考慮する必要があります。 もし仕事で求められる価値提供が自身の楽しめるコーディングだけでは提供できないのであれば、それ以外の行為が必要になる状況は避けられません。 コーディングだけで成果を出したいのであれば、そのための工夫が必要です。
多くの株式会社は資本主義に基づいており、その使命は「資本を増やすこと」です。 つまり、資本家から資金を集めて事業を行い、資本を増やすための仕組みです。 社会的、法的な要求により、副次的な責務や役割を求められますが、会社の本質は資本を増やすこと、すなわちお金を稼ぐことです。
よって、労働者がどのような期待をしても、会社の仕組み上、まず利益を出すことが最優先という原理があります。 働き方や仕事内容などの労働者が求める内容に応えることは社会的義務であり、法的にも制限されているため、最近はかなり豊富に用意されますが、本質として利益が優先されるインセンティブ構造は変わりません。 実際、どんなに社会的義務に手厚い会社でも、利益が出なければ解散することになります。
ここで改めて、仕事でコードを書くことについて考えてみます。 個人事業でも被雇用者でも、仕事=賃金を得るという以上、最優先事項は顧客価値になります。 評価されるかどうかは、この価値がどれほど提供できているか、提供することに貢献しているか、将来の顧客価値への投資になっているかによって決まることが理想です。
すると、より高い賃金を得たいと思う場合、通常期待される貢献度合いが上昇します。 つまり、その金額が支払われる価値があるだけの成果を毎年継続的に生み出し続けることが期待されます。 それをコーディングだけで実現し続けることは、大抵とても難しいと思います。
なので私の考えでは、コーディングだけでラダーを必要以上に登ろうとするのはナンセンスです。 コーディング自体での稼ぎを上げる方法としては、コーディングをメインとしているSW1、2からSr.SWくらいのエンジニアに対する賃金が高いところに身を置き続けるのが妥当ではないかと個人的には思います。
ちなみに、日本の組織では未だに年齢に対する根強い信仰があるように思います。 ラダーを登ることを望んでいない人に対しても、そろそろ登らない?というようなプレッシャーを組織としてかけていることがあります。 育成という視点では、組織として上位ラダーの価値や魅力を伝えていく活動は必要ですが、実際にラダーを上がるかどうかは本人の意思を尊重することが大事だと思います。
賃金を求めているわけではないけど、こういったプレッシャーによってコーディングメインのラダーに留まりにくい結果として、同じ悩みを持つ人もいるようです。 これもまた、そういったプレッシャーのない環境に身を置き続けるしかないのかな、と個人的には思います。