会社が採用ページで公開している技術を仕事で使えるとは限らない、うのみにしてはいけない
転職時、募集要項の技術スタックに、コンテナ、k8s、Golang、Terraform、Next.jsなどと、キラキラした技術が書いてあり、実際に入ってみると、PHPでした...、AWSのEC2でした....、Ansibleでした...
ソフトウェアエンジニアの転職では、よくあるのかなと思います。使っている部署はあるけれど、配属先では使われていなかった、そんなケースです。
筆者は運よく、比較的モダンと言われている技術に触れることができています。しかし、周りを見ると、その願いがかなわずに、レガシーな技術の運用にしか携わることができていない方もいます。
なぜ、こんなことが起きるのか、社内の様子を観察し、考察してみました。
もくじ
技術スタック目当てでの入社は難しいかも
正直、どの技術スタックで開発できるかは、運要素も強いと思います。カジュアル面談などで、よく聞くのが早いです。
技術スタックを紛らわしい記載をしている
例えば、募集要項に、
- 開発言語
- Golang TypeScript PHP Python Dart
と書いてあるとしましょう。これだけ見ると、おーーー、Golang触れるのか!とか思うかもしれません。しかし、実際に入ってみると、
- 開発言語
- Golang 10 % TypeScript 30 % PHP 50 % Python 8 % Golang 10 % Dart 2%
という風に、実際は、Golangの使用率は低かったということがよくあります。なので、どのくらいの割合で、技術が使われているのかをよく確認しましょう。
他のチームがつかっているだけ
自分が配属されたチームはたまたまレガシーな技術であり、他のチームでは、新しい技術を使っているという場合は多いです。
特に、新規事業とかだと、自由に技術選定できることが多いため、比較的技術が新しかったりします。もし、新しい技術が触りたければ、立ち上がったばかり、リリースしたばかりのチームを狙うほうが良いかもしれません。
逆に、運用、保守から入る場合だと、レガシーなケースは多いかもしれないです。自分が携さわるサービスが、若いシステムか、長生きなシステムかは聞いたほうが良いかもしれません。
リプレイス前
今は、レガシーだけど、今後リプレイスしたいという場合もあります。リプレイス時に、新しい技術に刷新するような場合ですね。
しかし、リプレイスって、本当に難易度が高いです。そのため、リプレイスは数年後、または、断念というケースも多いです。
弊社は、
- Golangでのリプレイスを考えている
- k8sでのリプレイスを考えている
- モノリスから、マイクロサービスアーキテクチャにしたい
こんなことを言われても、だまされないでください。リプレイスは現実的なのか?どれくらい本気なのか?をヒアリングしましょう
とりあえず、マイクロサービス流行ってるからとか、そんな理由でリプレイスしようとしているところも少なくはないです。私のいる会社はそうでした。
技術スタックなんか、なんでもいいんじゃない
逆に、技術スタックにとらわれることなく、経験を選ぶのもありなのかなと思ってます。これは私的な意見です。
技術はすぐ入れ替わる、基礎力のほうが大切
新しいフレームワークやライブラリは、すぐに現れては、消えを繰り返しています。しかも、やってることは、webサーバーや、何かの操作をパッケージ化しているだけです。(その、パッケージ化によって、多大な恩恵を受けているわけですが....)
新しいフレームワークやライブラリは、数年もすれば次の流行に取って代わられます。しかし、それらが解決しようとしている課題の本質は、実は何十年も変わっていません。
そのため、
- httpの通信はどう行われているか?
- ORMがどういうSQLを発行しているかを理解している
- クラス設計の基本、関心事の分離を意識する
などの基礎が身についていれば、基本的に、どの言語、フレームワークになっても対応できないことはないのではないのかなと思ってます。
そのため、筆者は、あまり、技術スタックにこだわりはありません。筆者はtsを主戦場として、戦っていますが、JavaやPHPの昔のエコシステムや、C言語でwebサーバーつくるとかにとても興味があります。
会社が要求しているのは、社会の課題を解決すること
会社がエンジニアに給料を払う理由は、Goを書くためではなく、「社会の課題を解決し、利益を生むプロダクトを作ること」です。 どれほど最新の技術を使っていようが、ユーザーに価値を届けていなければ、それはただの「技術の遊び場」です。逆に、古い技術であっても、何万人もの生活を支えているシステムには、学ぶべき重厚な知恵が詰まっています。
業務外で触れればいいじゃん
例えば、近年のクラウドネイティブ系のOSSは、Golangで書かれていることが多いです。コンテナイメージビルド、ランタイム、コンテナオーケストレータ、オブザーバビリティツール、セキュリティスキャナなど。
また、OSSということは、誰もがアクセスできるんです。OSSから、新しい言語がどう使われているか学ぶのもアリなのではないでしょうか。
最後に
結局、2つのことを意識するしかないのかなと思ってます。
- 入る前によく確認する!
- 技術スタック目当ての転職はうまくいかない
今回は、Golangをモダンの一例として、だしたのですが、数年後どうなってるかはわかりませんね。。。

