ポエム

レガシーシステムに対するエンジニアのキャリア

レガシーなシステム、レガシーな案件、レガシーな環境、エンジニアに常につきまとう問題だと思います。

エンジニアはキャリア構築のためにはレガシーシステムの経験を避けるべきなのでしょうか?

私は必要以上に気にすることはことはないと考えています。モダンを追い続けるだけがエンジニアのキャリア構築に役立つわけではありません。

エンジニアからしたら、レガシーシステムの仕事をしていると、技術が身につかなかったり時代に取り残されるという恐怖があります。私も昔はそうでしたし、今もそう思うときもあります。

ただ、レガシーシステムの案件にもいいところがありますし、レガシーからモダンな案件への転身って意外と簡単だったりまします。なので、気にしすぎてもよくありません。

今回はレガシーシステムに従事したときのメリット、デメリットを上げて、モダンの経験がそれほどなくても意外とどうとでもなるよという話になります。

レガシーとモダン

システムには常にレガシーとモダンがあります。

モダンとは旬な技術で構成されているシステムのことです。今の、そして今後のメインストリームとなるようなアーキテクトや技術でシステムが作られていて、エンジニアとしては楽しい、そして良い経験になる仕事と言えます。

対するレガシーシステムとは、モダンでないシステム全てと言っていいでしょう。今後すたれていく技術、システムの統廃合で消えゆくアーキテクトで構成されているシステムです。

レガシーシステムは厳密な定義がなく、人によって解釈が違います。

テストコードがないシステムをレガシーシステムと言ったりもしますし、Web系エンジニアはJavaなどの基幹系をレガシーと言ったりもします。またWeb系でもServerlessや最新のAPIフレームワークを使っている人からしたら、フルスタックフレームワークで作られているWebシステムもレガシーと言ったりします。

インフラで言ったら、オープン系の仕事をしている立場からだとメインフレームがレガシーになりますし、クラウドのPaaS環境が普通と思っている人からしたら、オンプレやオンプレとクラウドのハイブリッド、更にはクラウドでもEC2中心のIaaSはレガシーと解釈する人もいます。

レガシーシステムの仕事のメリットとデメリット

レガシーと聞くと、経営陣からしたらシステムが安定するというメリットはあっても、エンジニア目線だとメリットはまったくないように思ってしまいそうです。しかし、そんなことはありません。エンジニア目線でもメリットはあります。

エンジニアから見たレガシー案件のメリデメは以下の通りです。

メリット

  • お金・報酬がいい
  • 継続して案件に従事しやすい
  • 一度、技術を身につければ投資に対してリターンが大きい

レガシーシステムを抱えている企業は、大企業で資金を持っているところが多いです。そしてレガシー案件はやりたがる人がいないので、報酬を上げないとエンジニアを採用することがなかなかできません。これらの要因から、レガシー案件は報酬が高くなる傾向があります。

また、もう一つのメリットとして案件が継続しやすいです。そしてレガシーシステムは、いずれすたれる技術といっても、そう簡単にはなくなりません。レガシーシステムは、すでに利益を稼いでいるシステムなことが多く、運用がずっと続いていきます。なので、案件が切れることはあまりありません。

つまり安定して稼ぐことができます。事実、メインフレームは10年以上前からレガシー、古い、すたれると言われていましたが、未だに根強く残っており、メインフレームの技術者は高級取りです。

さらに最後のメリットとして、一度技術を身につけてしまえば、継続して勉強とかはそれほどしなくても大丈夫です。レガシーなので、新技術などが必要になることはそれほどありません。対してモダンな環境は絶えず、新技術を追うことになりますので、継続した勉強が必要になります。

デメリット

  • モチベーション維持が大変
  • 技術力はつきづらい、エンジニアとしての成長は見込みづらい

レガシー案件の最大のデメリットは、仕事に対するモチベーションが維持しづらいことです。やはりレガシーシステムはエンジニアからしたら、つまらないのでモチベーションは維持しづらいです。ずっとレガシーの環境に身をおいていたら、技術に対する興味を失う可能性もあります。

そして技術力は身につきづらいです。技術力の定義にもよるのですが、技術力をエンジニアリングではなく、これからの時代の新サービスを構築していくのに求められる技術と定義した場合、技術力は身につかないと言っていいでしょう。

実際問題、土台となるエンジニアリングの基礎知識があれば、新技術の習得はそんなに難しいことではないので、これはたいした問題ではないかもしれません。

問題なのは、環境のほうです。「現状を変えるなら環境を変えるしかない」と、言われるぐらい環境の影響は大きいものです。レガシーな環境が当たり前となると、技術の興味が薄れ、結果として新技術も身につけられなくなる可能性はあります。

レガシーシステムの経験を、そんなに気にしなくていい理由

モダンな職を得るのに、経験はそれほど必要ない

レガシーな案件に躊躇したり、従事していることに不安を感じるなら、エンジニアとしてまだまだというか危機感を持ちすぎです。

というのも、レガシー案件の経験しかなかったとしても、モダン環境の案件獲得や転職はそれほど難しいことではありません。

例えばですが、私は少し前に、VueやReactのフロントの構築を担当しましたが、それまではフロントはまったくやったことありませんでした。フロントをやりたいとも言ったことはなかったのですが、できると判断されたのでしょう。普通にアサインされました。

VueやReactをモダンとするなら、その少し前にメインストリームであったjQueryの経験がないと従事できないかというと、そんなことはないんですね。

レガシーとモダンの隔たりなんて、こんなものです。経験ゼロの人がいきなりモダン環境でシステム構築することもざらにある世界です。

レガシー経験があったほうが優位なこともある

案件にもよりますが、レガシー10年やってエンジニアリングの基礎知識はばっちりという人と、経験3年でトレンドだけやってきましたという人なら、前者を採用するパターンもかなりあります。条件が同じならもちろん、前者のほうが多少報酬が高くても前者を採用する企業はそれなりにあります。

そもそもモダンを追い続けたとしても、次の職で求められているものと自信の経験が完全に一致するということはありません。

転職や案件の商談は、企業が求めているものにたいして、満たしているものと満たしていないけどこれから身につけたい思っていることを提示して、お互いにその折衷案を探るマッチングの作業です。

そう考えれば、モダンを追い続けてきた人でもレガシーの経験が多めの人でも大差はありません。さらに言えば、レガシーからモダンへの移行の案件などはレガシー経験があったほうが優位ということもあります。

大事なのマインド

もちろん何十年もレガシーしかやっていませんとなると、モダンへの鞍替えは難しいでしょう。なのでどこかのタイミングで、モダンの経験を積んで自身の価値を拡大することは必要です。ただそのタイミングは、3年や5年なら全然大丈夫かと思います。

問題なのはレガシー環境に慣れ、自身のスキルアップを放棄してしまうことです。レガシー環境でも学びがあるうちは、その学びに精進するべきです。こんなことを勉強しても未来がないと考えるぐらいなら、今やっている全てを身につけてやると考えて吸収して下さい。

そして吸収しきって学びが完全になくなってはじめて、自分のレガシーの経験を憂い、新たな経験を求めればいいと思います。その時には自身の価値も向上していて、モダンの職を得ることも難しくないでしょう。

まとめ

以上、エンジニアはレガシーの経験をそんなに憂うことはないよという主張でした。

レガシー案件の話がときどき入ってくる自分への励ましも込めて書きました😅