Richard Imaoka's Blog

2017年より職業Scalaプログラマになった、リチャード・伊真岡のブログです。

エンジニアにとってよい転職とはなんだろう?

TL;DR

現時点での私の結論は、以下の3つの合計を長期的バランスをとりつつ最大化すること:

  • 収入が上がること
  • 自分が興味のある分野で、可能な限り影響力の大きい成果が出せること
  • 自由な時間を確保できること

エンジニアにとってよい転職とは

エンジニアにとってのよい転職とはなんだろうということをずっと考えている。

収入だけが大事ではないと思う。私も経験したが、高収入でクソのようなエンジニア職はある。

スキルが上がることが重要だろうか?たしかにエンジニアにとってスキルは非常に重要だが、スキルがあがっても年収がついてこない仕事はだいぶ悲しい。しかしスキルさえ身につけば、その次の転職で収入は爆上げできる?いや、そもそもスキル向上と年収って相反するものなのか?

それから健康的な労働環境も重要だ。例えば、長時間労働は思考力すら奪う。

どうやらいろんな項目をバランスして評価しないと、よい転職かどうかは判断できなさそうだ。当たり前と言えば当たり前だが。

3つの重要項目

では、転職に際して考慮する中で、特にエンジニアにとって重要な項目はなんだろう?自分自身の転職や業務での経験を踏まえて以下の3つを上げてみた。

  • 収入が上がること
  • 自分が興味のある分野で、可能な限り影響力の大きい成果が出せること
  • 自由な時間を確保できること

これらに異論がある人もいるだろうが、できるだけ広範な人にとって重要度が高いであろう項目をあげたつもりだ。

収入に関しては、多くの人が納得するところだろう。理屈の上では福利厚生も収入として換算できるし、年収という形ではなくてもストック・オプションがあればもちろん魅力的な転職になる。(私個人の考えで言えば、他人の作った会社のストック・オプションに期待するのは悪手だが…)。

次に「自分が興味のある分野で、可能な限り影響力の大きい成果が出せること」について。「自分が興味のある分野で」というのは、たとえば

  • 研究志向のつよいエンジニアが、2番煎じビジネスでマーケットシェアを奪ってもうれしくないだろう
  • アーキテクチャ設計を極めたいエンジニアが、カスタマーサポートエンジニアとしていくら顧客の評価が高くてもうれしくないだろう

ということ。「可能な限り影響力の大きい成果が出せる」というのは多分わかりやすいと思う。1000万円のビジネスを作った、というよりも1億のビジネスを作った、という方がおもしろいだろうし、1,000人を助けられる仕事より10,000人を助けられる仕事のほうがいいだろう。

自由な時間も大事だ。今の時代、仕事だけが人生ではないし、仕事以外の取り組みが次の仕事に活きてくることも多い。

もちろん中には「自由な時間は必要ないから、とにかく働きまくって、成果を出してめちゃくちゃ稼ぎたい」という人もいるだろう。人によって、時期によって各項目の重み付けは異なる。

それからこれら3項目にピンとこない人もいるだろう。当然まだまだ検討の余地はあるが、これらは「各エンジニアの価値観」を最重要視しているわけではなく、長期的に人生を豊かにするために重視すべき項目だと思っている。「私はコレが好きだから!」といってどんどん経済的に困窮したり、人生の時間が奪われていく選択肢を避けるための指標ということだ。

スキルについて

さて、この3項目に意図的に入れなかった項目がある。それは「スキルが身につく」という条件。

多くのエンジニアが第一に考える条件だろうし、私自身の最近2回行った転職もスキルアップを重視しての転職だった。ただ、このスキルというものは最終的には何か仕事で成果を残すためにあるのであって、つまりそれは2番めの項目の「可能な限り影響力の大きい成果が出せること」の文脈の中で考えられなければならないものだと思っている。スキル獲得自体が目的化してはいけない。スキルが重要視されるエンジニアだからこそ、あえてスキル自体でなくどのような成果が残せる仕事か、どうスキルが収入に結びつくのかについて考えてもらいたい。

よい転職評価「モデル」

ということで、この3項目をベースに転職の良し悪し判断するモデルを考えてみたいと思う。モデルというと意味がわかりづらいかもしれないが、言わば転職の良し悪しの計算ルールだ。ただし、計算ルールといいつつも数字を一発でバシッと出すのは難しく、この記事を書いた時点ではできなかった。

細かい計算についてはこの記事ではなく後々検討できたら良いと思っている。

それから先に重要項目を3つに絞ったのにはモデル化する上でも意味がある。重要項目が多過ぎるとモデルが不安定になり、いわゆるオーバーフィッティングになるからだ。例えば、参考事例の集合として東京在住のWeb系エンジニア100人をうまく説明するモデルを作ったとしよう。しかし、評価対象の重要項目が多すぎてモデルが不安定だと、101人めのエンジニアに同じモデルを適用したとき大きな誤差を生みやすい。モデルの重要項目は少なくあるべきで、そうすれば東京在住のWebエンジニアも、地方在住の組み込みエンジニアも、同程度の誤差で評価できる安定したモデルをつくりやすい。

(統計に詳しい人は、「たくさんの項目を加味して、重回帰分析で重要項目を導き出せばいいじゃん」と思うかもしれない。そういうやり方も非常に興味深いが、今回は置いておこう。計算モデルの導出が複雑になるので、ちょっと私には扱えない。いずれ重回帰分析によるモデルも検討してみたい。)

制約条件

人によっては絶対に譲れない条件があるだろう。絶対に東京で働きたい人もいるし、あるいはバリアフリーの会社でしか働けない人もいるだろう。

これら制約条件は、先の転職評価モデル内の3項目と違い「点数が高いほどいい」という類の物ではなく、「この条件は絶対に譲れない」「この閾値を超えたらアウト」というゼロイチの判断基準である。

つまり私の考える転職評価モデルは、転職者によって定められた制約条件の中で、転職者の志向を重み付けによって反映した3項目の合計値を最大化する、それをよい転職と評価するモデルになる。

なお、制約条件は奥の深い話で、実は転職者本人にとって気にする必要がない制約条件が見つかれば、それを外すことで一気に3項目の合計点を上げられる可能性がある。例えば、「絶対に英語を使う職場に行きたくない!」という人も、突き詰めて考えれば英語を使いたくないわけでなく日本にいたいだけであって、そこに気づけば一時的に英語を猛勉強して一旦外資系の会社に転職し、その後はバイリンガルエンジニアとして高級な職を渡り歩いたり、あるいはリモートワークで海外の会社に雇われることもできるかもしれない。

長期的な最大化

最後に、3項目の合計点は長期に渡って考えないといけない。直近の転職で仕事量が増え自由時間が減り、年収が落ちたとしても、大きな成果を残せることが期待できて、数年後に良い条件で転職できるならそれは良い転職といえるだろう。もちろん、未来のことはわからないので、不確実性を割り引いて考えないといけない。

ただし、長期的に考えると言っても、得られるものは早く得られる方が良い。若くして多額の資金を得られれば、別のビジネスを初めてもっと楽しい人生を歩めるだろうし、長期休暇をとることもできる。キャリアの早い段階で仕事上大きな成果を残せれば、有利な条件での転職ができ、さらに大きな成果を転職先で積み上げやすくなるだろう。

これが、現時点での私の結論だ。先に言ったようにこれらを定量化する段階まではこの記事を書くにあたって至っていない。今後機会を見て、定量的な視点を交え転職の良し悪しというものを分析できればと考えている。