エンジニア全般

【プログラミング】エンジニア実務経験の幻想について 年数偏重の歪み

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

転職するにもどこも実務経験年数を募集要項にしているな

ぶっちゃけ自社サービス企業でまったり開発していただけだけど実務経験だけは5年だわ

副業とOSSコミットと、炎上案件乗り切ったけどまだ実務経験2年。でもそのへんの3 ~ 5年エンジニアに負けていないと思うんだけどな。

以前、下記のような投稿をしまして、
このテーマについて、もっと深掘りしてみたいという内容です。

現実問題としては、もちろん実務経験年数があるのが有利ですが、
果たして、この実務経験年数がどれぐらい信頼性があるのかは、
気になるところ。

本記事では実務経験年数について、考察を深めたいと思います。

Youtube動画でも取り上げた話題です。

エンジニア採用にまつわる実務経験について

実務経験とは?

まず、そもそも実務経験とは?って話ですが、
文字通りの意味で、エンジニアとしてお金をもらって従事した経験のことですね。
会社で働いたりとか、フリーランスで案件を行ったり、
個人開発アプリで収益化とかしたら実務経験といえるでしょう。

また、収益化ではなくとも、
OSSに継続的なコントリビュートをすれば、
これも実務経験にカウントできるでしょう。

なぜなら、OSS開発は、基本的に高難易度のことが多く、
独力でOSSのコードを読んで、issueを把握して、プルリクエストを出して、
mergeされるという過程を要するため、
プログラミングスキルが高くないと努まりません。

ただ、OSSとはいっても、私が適当に作ったクソアプリもジャンル上OSSになってしまうので、
基本は多くのエンジニアやユーザーなどに使われている大規模OSSであることが前提になります。

Ruby界隈とかだと、Railsをはじめとする、有名なrspec, rubocop, kamainariのようなGemがわかりやすいと思います。

基本的にこれらの経験が実務経験といえるでしょう。

エンジニア採用での募集要項

さて、そんな実務経験ですが、Webエンジニアなどの場合、
就職などする場合、必ずといっていいほど実務経験が重視されます。

中途採用の一般的なボーダーとしては、
実務経験3年を設けている企業が多い印象です。
(そして大抵の場合、言語やフレームワークごとに年数を設けています。)

Webエンジニアをはじめとした、ソフトウェアエンジニアは、
高度な専門知識が要求される職業のため、
一定の実務経験を募集要項に求めるのは、
非常に合理的なやり方だと言えるでしょう。

しかし、個人的な印象としては、
あまりにこの実務経験を過信しすぎているような気もします。

というのも、そもそもこの実務経験というものが、
よくよく考えると曖昧で、指している領域が広すぎるからです。

例えば、冒頭の投稿がいい例です。

この場合、
前者のエンジニアは、実務経験こそ3年ありますが、
3年間、同じ言語やフレームワークなどを使い、
保守がメインで新規でゴリゴリ開発する機会はそこまで多くなかったとすると、
大抵の場合、後者のエンジニアのほうが、スキルとしては、優れている可能性が高いでしょう。

それでも、多くの場合足切りにひっかるのは、
後者のエンジニアになってしまいます。

このような業界の構造が、
歪に感じるのは私だけでしょうか?

主に、下記の点でいびつさを感じます。

エンジニア採用の歪な点

  • 実務経験偏重すぎる
  • 早期離職がマイナスになる(これは確かに一般的にはマイナスでしょうが、エンジニアの場合必ずしもマイナスにならないと思います。)
  • 実務経験の中身で何をやってきたか、実務経験年数より軽視される。
  • そもそも実務経験年数だけでプログラミングスキルレベルが図れるという前提のもとに動いている気がする

実務経験年数至上主義

基本的に、ITエンジニアの募集要項は、
実務経験3年や、5年といった年数ありきで、
採用が行われている印象があり、
この年数を満たしていないと足切りされることが多分にあります。(実体験)

このやり方は、合理的だと感じる一方、
乱暴だとも感じます。

上記のようなケースで正しい判断ができないからです。

また、実務経験年数というものも、
ただ、だらだらとエンジニアとして過ごして年数を稼ぐことも可能な点で、
過信しすぎるのもどうなのかなと感じます。

副業が可能な今では、1年でも3年に劣らない濃い経験を積んでいるエンジニアも多いと思うので、
経験年数を足切りにするのは、そういった優秀なエンジニアを落としてしまう可能性がある気がします。

また、実務経験が少ない人のほうが、
若い人の方が多い分、新しい技術に積極的だったり、
柔軟だったり、勢いがあったりすることもあるので、
必ずしもデメリットになるとも限らないとも思います。

これらの点で、実務経験年数だけを過信するのは、
合理的なのか疑問が残ります。

エンジニアのキャリア

エンジニアをキャリアを考える点では、
様々な尺度があると思います。

本記事では、主に早期退職や自社サービスキャリアについて
考察します。

以前、こちらの記事では、フルスタックエンジニアについて、
考察しました。エンジニアのキャリアという観点では、
こちらの尺度も考察しがいがある論点だと思うので、
興味がある方は、ご覧いただけますと幸いです。

参考【凡才エンジニアの処世術】フルスタックエンジニアの本当の意味

エンジニア界隈では、しばしばフルスタックエンジニアという言葉を耳にします。 しかし、このフルスタックエンジニアとは何なのでしょうか? 「フロントもバックエンドもモバイルもインフラも全てできる人?」「フ ...

続きを見る

エンジニアの早期離職

一般的に、キャリアにおいて、
早期離職は、企業側にとって
育成コストが無駄になったりと、
デメリットが大きい分、
早期離職するような人材は、採用しにくいというのはあると思いますし、
これ自体はそのとおりだと思います。

ただ、エンジニアの場合、
色々なプロジェクトやシステムに触れた方が、
濃い経験が積めるのは確かなので、
エンジニアとしての成長を考えると、
どうしても早期離職して、色々なシステムに触れるという経験が必要になる気がします。

Sierなどの受託開発の場合は、
転職しなくとも、様々なプロジェクトにふれることができるかもしれませんが、
それでも実際は、各Sierも自社の強み技術のようなものがあって、
案件も似たりよったりになりやすいということはあるので、
転職に比べると、全く別のシステムに触れられるという経験は積みにくいと思います。
(私が以前努めていたSierは、Railsに定評があったので、
ほぼ全ての案件がRailsでしたし、Railsデファクトの思想でプログラミングされていたので、
Rails界隈ではそこまで流行っていない、DDDのような設計手法などに疎かったり、遅れがちな印象は有りました)

それに自社サービスだと、
転職をしないと、他のサービスを見る機会がOSSしかなくなるため、
なおさら、色々なシステムに触れる機会が少なくなってしまうでしょう。

そのため、ぶっちゃけた話、エンジニアにとっては、
早期離職しないことのほうが、自身の技術力を停滞させてしまうかもしれないリスクを
抱えているとも捉えることができます。

企業側にとっては、早期離職はリスクなのに対し、、
エンジニア側は、早期離職しないことのほうがリスクになりうるという点で、
双方が真逆のニーズになってしまっているという特徴はあると思います。

なので、現状の策としては、
巷でよく言われているように、3 ~ 4年間ぐらい在籍して、
転職するのが一番賢い立ち回りのような気がします。

様々なシステムをみて、技術力を高めるという点では、
フリーランスが一番適しているのかもしれません

自社サービスキャリアの違和感

新卒で自社サービスの会社に就職して、
三年間ぐらいずっとエンジニアとして勤務した場合、
実務経験三年のエンジニアになります。

なので、一般的な募集要項の足切りはだいたいクリアできるかと思います。
ただ、正直このパターンのエンジニアは、次のような懸念があるように思えます。

自社サービスエンジニアの懸念点

  • 様々な案件、システムなどを経験していない
  • 使用技術が三年間同一または、似たりよったり
  • 企業にもよるが運用メインの場合は、プログラミングスキルが低いことが予想される
  • 良くも悪くもぬるま湯パターンが多い

もちろん、あくまで懸念なので、
これに当てはまらない優秀な自社サービス勤務のエンジニアもたくさんいると思います。
(それに自社サービスは、最初の時点で就職難易度が高いですし)

ただ、もしフロントエンジニアとかであれば、
自社サービス出身の人は、懸念点が多い気がします。

というのも、自社の場合、
使用技術を簡単に変えることができないので、
何だかんだでレガシー技術をリファクタリングして運用していくことが必要になるため、
モダンフロントエンドにふれる機会がなかったりします。

ただ、これは、フロントエンドエンジニアにとっては、
場合によっては致命傷になる気もするので、
自社サービスで3年間実務経験を積んだから、
足切りが突破しやすくなるというのは、
個人的にはかなり違和感があります。

例えば、jQueryで運用されているレガシーシステムの自社フロントエンドエンジニアなどが
いい例かもしれません。

三年間jQueryだけを使っていたフロントエンドエンジニアとなると、
現在ではかなり厳しい気がしますが、実務経験年数で言えば
3年なので、足切りは免れるでしょう。

そうなると、実務経験年数は、
やはり信用ならないというのが無難な見方ではないでしょうか。

それに自社サービスは、
コードがきれいなことも多く、
プロダクトとしては成熟していることが多いので、
スパゲッティコードへの免疫もつきにくい気もします。

メンテンスしやすいコードの保守開発を3年間やったのと、
スパゲッティコードを1年間でなんとかメンテナンスできるレベルまで、
リファクタリングしたのとでは、圧倒的に後者のほうが高いスキルが要求されるのに、
前者のほうが転職市場では有利というのがやはり違和感があるところです。

まだまだ少ないコーディングテスト

結局のところ、
無難にコーディングテストなどをするのが、
一番不公平がないように思いますが、
なんだかんだでまだまだ面接重視の企業が多い気もします。

個人的には、コーディングテストはそこまで得意じゃないので、
これは嬉しいような気もしますが、
エンジニア採用の歪さという観点では、
コーディングテストをやらずに、実務経験年数で足切りをするのは、
かなり歪だと感じます。

そういう意味では、私もどうせ落とされるなら、
コーディングテストで落とされたいと思います。

エンジニアにとっての理想

ここからはあくまで私の理想でしかないですが、
エンジニアが継続的に技術を高めていくには、
下記に似た戦略を取る必要はあると思います。

転職市場ではもてはやされる、自社サービス勤務のエンジニアは、
エンジニアとして成長できているかという観点で言えば、
必ずしもYesとは言えないでしょうから。

さて、エンジニアにとっての理想ですが、

エンジニアの理想

  • 退職をしなくても様々な企業に在籍できること(現在での副業をもっと柔軟に適用されること)
  • 自社サービス勤務は、技術を高めるという観点では、3 ~ 5年で転職するのが良いということ
  • 実務経験年数ではなくて、何をやったかで技術力が評価されること

といった感じでしょうか。

結論

結論、エンジニアの転職市場においては、
必ずしもスキルが評価されるとは限らないということです。

もし、ホワイトの企業でまったり経験を積める状態なのであれば、
焦らず、そこで窓際族として経験年数を増やして行ったほうが、
市場価値の高いエンジニアになれるということです(もちろん、これはものすごく歪ですが)

エンジニアは、技術が好きで、休日も勉強している人が理想とかって言われがちですが、
このような業界構造だと、窓際族で実務経験年数だけ増やして行ったほうが得なので、
キャリアとしては、休日勉強するのはコスパが悪いということになりがちです。

なので、私としては、このような歪な構造が撤廃されることを願っています。
私と同様に業界の歪だと感じた方は、X(旧ツイッター)やSNSなどでシェアしてくださいますと嬉しいです。

Qiitaの方も見てくださいますと、
嬉しいです。

https://qiita.com/reisuta

  • この記事を書いた人
  • 最新記事

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

おすすめ記事はこちら

Vim/Neovimプラグイン 1

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

VimとNeovimの比較 2

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

Ruby変数やすべてがオブジェクトについて 3

本記事は、Rubyの基礎文法である、変数や真偽値、論理演算子に触れると同時に、「すべてがオブジェクト」というRubyの特徴的な思想についても解説します。 この思想は、Rubyの文法の根幹になっているの ...

4

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

5

エンジニアになるには? プログラミングは、専門性が高く自分一人で勉強するのが大変に感じることも多いですよね。 そこで本記事では「おすすめのプログラミングスクール5選」を特徴と、現役エンジニア目線で優れ ...

-エンジニア全般