サーバーサイドエンジニアが転職する際の選択肢は沢山ある
「ゲームのサーバーサイドとかもいいよな!」
「今までとはちがう業界もいいな」
転職したい理由は人それぞれですが、共通して発生する問題として、同じ仕事を長く続けていると飽きるというのがあります。
幸いなことに、サーバーサイドエンジニアが他業種へ転職するのはかんたんです。
Webサービスもスマホアプリも業務システムもサーバーサイドは同じ技術(HTTPサーバで動くもの)を使っているからです。
私はこれまでに三度転職し、
と様々な業種のシステム開発をしてきました。そんな経験を踏まえて、「サーバーサイドエンジニアが転職する際の選択肢」を紹介します。
Contents
大まかに3つの選択肢がある
サーバーサイドの多くは、Apache・nginx等のWebサーバ(HTTPサーバ)上で動くものです。
もともとHTTPはWebサイトを作るための仕様として作られましたが、現在はスマホアプリ・ゲームのサーバーサイドでも使われています。
そのため、サーバーサイドエンジニアは今持っている技術を他の業種でもそのまま使えるわけです。
その選択肢を見ていきましょう。
選択肢1. Webサービスのサーバーサイド
SNS、ブログ、ECサイトなど、Webサイトはたくさんあります。
「最近はWebよりスマホアプリの企業の方が景気が良いんじゃない?」って思ってる方もいるかもしれませんが、スマホが普及したことにより、Webサイトのアクセス数も増加しています。
私が運営しているWebサイトのアクセス統計を見ると、スマホからのアクセスが70%以上を占めます。PCからよりもずっと多いのです。
単純計算すると、スマホがない時代にはなかったアクセスが70%分もあるということにもなります。
つまり、スマホからのアクセス増によりWebサービスもまだまだ伸びる分野なのです。
選択肢2. スマホアプリ/ゲームのサーバーサイド
スマホアプリのクライアントサイドは、
- iOSなら、Swift/Objective-C
- Androidなら、Java/Kotlin
- ゲームなら、Unity(C#)、Unreal Engine(C++)、その他のゲームエンジン
で開発するので、サーバーサイドとは全く違ったアルゴリズムやAPIの知識を必要としますが、サーバーサイドはWebと同じです。
同じと言ってもレスポンスの返し方が異なります。
Webサービスの場合、サーバーサイドのプログラムは基本的にHTMLのレスポンスを返しますが、スマホアプリのサーバーの場合、JSON形式のレスポンスを返します。WebでもAjaxでJavaScriptから通信する場合は同様にJSON形式で返しますのでおなじみですよね。
JSON形式のレスポンスを返すサーバープログラムをJSON APIと言います。
スマホアプリ/ゲームのサーバーサイドエンジニアの仕事はJSON APIを開発するのが主な仕事となります。
選択肢3. 業務システムのサーバーサイド
現在、企業が会社の中で使うシステムの多くはWebアプリケーションとして実装されています。
インターネットの普及前はクライアントサイドはVisual Basicで作ったWindowsアプリケーションで、サーバーサイドはC言語で作った独自プロトコルのサーバープログラムだったりしましたが、2000年代に業務システムのWeb化が進みました。
ですから、Webサーバーサイドのエンジニアは業務システム開発の仕事をすることもできます。
業務システム開発をするにはプログラミング技術だけでなく、その会社の業務を理解し、どこをどのようにシステム化したらいいかを考えるスキルも必要になります。いわゆるSE(システムエンジニア)の仕事です。
「業務システム開発はつまらない」という声はよく聞きますが、それは人それぞれです。Webサービスやスマホアプリの方が華やかに見えますが、業務システムは地味ながら会社の業務の一部を担い、業務の効率アップに貢献します。
そういう意味では「社会の役に立ってる感を味わえる」という面白さがあります。
私は業務システム開発を10年ほど経験しています。やってた当時は「地味でつまらないなぁ」と思っていましたが、今思えば、作った物が会社の業務の一部となって、社会を支える素晴らしい仕事でした。
言語の違いはどう考える?
「サーバーサイドは皆Webベースで同じだ」と言っても、プログラミング言語はいろいろあります。
サーバーサイド言語は
- PHP、Ruby、Python、Perl
- JavaScript、TypeScript
- Java、Scala、Kotlin
- C#
- Go
等たくさんあります。
ここで考え方は2つです。
- 自分が今まで使ってきた言語を使ってる企業の中から転職先を選ぶ
- 入りたい会社が自分の言語スキルとちがう場合、その言語を覚えて転職する(あるいは入社してから学ぶ)
1のほうが、これまでの言語スキルをそのまま活かせるので良いように思えますが、私はどちらかというと、2のように新しい言語を覚えて入りたい会社に転職したい派です。
新しく言語を覚えるのって、やってみると思ってたよりずっとかんたんだったからです。
サーバーサイドでやることって基本的に同じ(リクエストを受けてレスポンスを返す)なので、言語によって、その表記法が変わるだけですからね。
逆に言語が同じでも、種類が違うソフトウェアを開発するスキルを身につける方がずっと大変です。
言語よりアルゴリズムの違いの方が難しい
例えばJavaの場合、
- Webサーバーサイドの開発
- Androidアプリの開発
どちらもできますが、同じJavaでもWebサーバーサイドとスマホアプリのクライアントサイドとでは、アルゴリズムや考慮すべきことが全く異なるので、修得はけっこう大変です。
それに比べてJavaでサーバーサイドをやってた人がPHPのサーバーサイドを覚えるのはかんたんです。言語のシンタックスと主要なAPIを覚えれば大抵のことはできてしまいますからね。
言語を覚え始めの頃ってHello Worldできただけでも楽しいですよね?
そういう新鮮さが味わえるので、一つの言語を長い間使っていて飽きてきてる方には、新しい言語を覚えてみるのもいいでしょう。
それに、言語の経験がなくても、採用してくれる会社はたくさんあります。
言語不問の求人はたくさんある
求人の募集要項で、「PHP/Java/Rubyいずれかの経験をお持ちの方」とか書かれているものをよく目にしますよね。それだけ、言語を新たに覚えることはかんたんだと企業側も考えているということです。
もちろん、一つの言語を使い続けて極めるというのもありです。私が新卒で入った会社の先輩はずっとJavaの仕事をしています。会社を辞めてフリーランスになって仕事を選べるようになった今でもJavaを使い続けているそうなんです。これも一つの道です。
あなたはどちらの道を行きますか?