インフラエンジニア とアプリエンジニア(開発エンジニア)のどっちが良いか?なるならどちらか?
この問いはこれからエンジニアになろうとする人もエンジニアとしてある程度経験を積んだ人も持っている共通の疑問です。
そしてこれからも続く永遠の論争なので絶対にこれ!!という答えが出る疑問ではないのも自明の理。
しかし、本記事ではこの永遠の疑問に対する回答をエンジニア歴15年の筆者が答えていこうと思います。
ちなみに両方ともをマスターするという道も昨今のIT業界ではありえる話となってきたので、その観点でもお話ししてます。
インフラエンジニアの特徴
インフラエンジニア といえばサーバーやネットワーク、OS、ミドルウェアといったアプリケーションを動かす土台となるものを構築、運用保守するエンジニア。
近年ではクラウドの知識や技術を持ち合わせ、設計構築していくイメージも強く持っています。
インフラエンジニア の大きな特徴は様々なOS、ミドルウェア、ベンダー製品といった広義の知識が求められる事。
最近で言うとクラウドの知識やネットワークの知識も必須になってきており、多岐にわたる知識を要求されます。
システム機器や環境に対する様々な知識を駆使して設計構築を行なったり、運用保守したりと縁の下の力持ちなポジションです。
プログラミングの知識はいるのか?
幅広い知識を求められる一方でプログラミングの知識を求められる事はほとんどないと言えます。
できるに越した事はないがアプリケーションエンジニアほど求められないし、実務で使わない事も多いので、プログラミングを挫折した人でもなれるのがインフラエンジニア ではないでしょうか。
強いて言えばシェルスクリプトが少し書ければ困る事はないというレベルなので、敷居は高くないです。
いやいやクラウドになって色んなAPI使ったりする場面あるよ
という声もあるけど、シェルスクリプトをちゃんと理解して書けるのであればいくらでも応用がききます。
徐々にステップアップしていけば良いというレベルの話なので気にする必要ありません。
コミュニケーション能力は必要か?
エンジニアは一定のコミュニケーション能力は必要です。
これはインフラエンジニアだろうがアプリエンジニアだろうが同じ事。
ただそれぞれでコミュニケーションする相手には特徴があって、インフラエンジニアはアプリケーションエンジニアと会話したりプロジェクトリーダーとして他のエンジニアと会話する事は多い為、同業者と話す機会が圧倒的に多いです。
一方でユーザーと会話する機会はあまりなく、システム利用者の反応やクレームを直接受ける事はほぼありません。
アプリエンジニアの場合は後述しますがユーザーさんと話す機会も多いので、より幅広く話する相手がいる感じでしょうか。
インフラエンジニアはユーザーから見えない位置のシステム部分を担っている事が多い為、縁の下の力持ちみたいなイメージが強い職種なのです。
アプリケーションエンジニアの特徴
アプリケーションエンジニアは文字通りアプリケーションを設計構築したり、保守開発したりするエンジニアの事です。
一般的にエンジニアと言えばこちらのイメージが強く、様々な言語を使いプログラミングを行うのもアプリケーションエンジニアです。
もちろん作るだけでなくて、設計もしなければならないし、大規模なプロジェクトだとプロジェクト管理も一つの役割としてふってきます。
大規模プロジェクトになればなる程、アプリケーションエンジニアがプロジェクトマネージャーを兼ねている事が多く、
コミュニケーション能力は必要か?
大規模プロジェクトのマネージャーともなるとほぼ会議や仕切りだったりする為、コミュニケーション能力は必須です。
ユーザーとの距離が近いのもアプリケーションエンジニアの特徴の一つなのでインフラエンジニアと比較すると話す相手が多いのも特徴の一つです。
インフラエンジニア とアプリケーションエンジニアの将来性は?
将来性という観点で考える人も多いしこの手の話題もよく聞く話題ですよね。
結論からいくとインフラエンジニア 、アプリケーションエンジニアのどちらを選んだとしても将来性はあります。
ちゃんと知識をブラッシュアップできる人であれば問題なくやっていけるというのが答えです。
ただしスキルの見極めは大事。
将来性が見込めるスキルを身につける事
一つのスキルをとことん極める事
どちらも考えて身に着けていかなければ将来的につみます。
昔COBOLが主流だった頃、多くの人がCOBOLを学ぶ中でJavaを身に着けた人が今は大活躍。
その流れが今度はRubyやPythonにきているとも言えますし、今後まだ見ぬ技術が台頭してくる未来も存在します。
IT業界は技術の流れが速い為、今ある仕事がそのままずっと続くとは限りません。
ちゃんと将来を見据えたスキルアップが必要になるわけです。
インフラエンジニアに向いている人
インフラエンジニア に向いている人は以下のような人たちだ。
- 技術書を読んだり、ベンダー情報を知る意欲がある人
- 様々な分野の技術に興味ある人
- 地味な仕事でも淡々とこなせる人
- マイペースに仕事を進めていける人
- システムの設定値を細かなところまで把握できる人
- トラブルでも状況を把握して論理立てて説明できる人
新しい知識をどんどん吸収して実務に応用できる人であれば誰でもできる。
またユーザーと直接関わる事が少ない為、マイペースに淡々とどんな仕事でもできる人は強い。
一方でユーザーから感謝されたいとか革新的なデザインを作って評価を得たいといった気持ちが強い人には向いてないです。
日々淡々と当たり前に動く基盤を作ったり守ったりする職種なので派手さはない。
あとはプログラミングを諦めた人の受け皿になっている側面も強い。
実際、プログラミングは難しくて諦めたけど、インフラエンジニア として知識と経験を積んで第一線で活躍してるエンジニアも多い。
そういった人たちは元々プログラミングを少し経験しアプリケーション開発の手法も知っているので、インフラエンジニア でありながらアプリの状況もわかる。
そうなると引く手数多になるので、怖いものなしですね。
インフラエンジニアはシステムの土台を支える仕事の為、様々な仕事で重宝されます。
見た目の派手さではなく堅実に確実に仕事を積み上げていきたい人にはインフラエンジニアが向いてます。
アプリケーションエンジニアに向いている人
アプリケーションエンジニアに向いているのは以下のような人たちだ。
- 色んな人と会話して段取りが組める人
- アプリケーション作りを楽しめる人
- 大規模な仕事をしたい人
- ユーザーの話を聞いて意向を聞ける人
- ユーザーの反応を見聞きしたい人
ユーザーと近い距離で仕事をしたいならアプリケーションエンジニアの方が良いです。
ユーザーからの反応が見れるし、会話する事もできる。場合によってはQA対応やトラブル対応も必要になるが、ユーザーの反応が良かった時の喜びも大きいですね。
インフラエンジニアは裏方でユーザーと直接関わる事がほぼないため、上記のような機会はアプリケーションエンジニアだからこそ得られる機会だ。
また仕事の規模が大小様々で幅広いというのも魅力の一つ。
大規模プロジェクトと呼ばれる仕事はアプリの場合、10億、100億といった単位のものも存在しています。
そういった案件の場合、インフラエンジニアもチームにはいますがプロジェクトマネージャーはアプリでやる事が多いです。
これらの仕事はほとんどSIerが担う仕事ですが、大きなお金を動かしたいというのであればアプリケーションエンジニアの方が機会に恵まれますね。
規模が大きくなればなるほど分業になるため、管理、設計、実装の役割を持つ人が多くなり、結果として管理しかやらない人や実装しかやらない人などが出てきます。
大手SIerが自身でプログラミングを行わなくなるのはこの為です。
億を超えるプロジェクトで全ての作業を抱えてたらプロジェクトが破綻するので当たり前と言えば当たり前。
ユーザーと近い距離で仕事をしたいたらアプリケーションエンジニアを選ぶべきです。
業界未経験から目指すならインフラ・アプリどっちか?
未経験からの転職で目指すならどちらにしようか迷う人も多いと思いますが、まずは自分がやってみたい事を優先して決めて大丈夫です。
ただ、向き不向きというのはあるので、プログラミングに苦手意識を持つならアプリケーションエンジニアはやめておいた方が良いです。
そもそもエンジニアになりたいと思った理由が何かによるので、自分でプログラムを組んでアプリを作りたいのか、自分でサービスを立ち上げたいのか?でもやりたい事は変わります。
自分でサービスを立ち上げるのに自身がエンジニアでなくても立ち上げてる人はたくさんいますしね。
給料が良いからという話でエンジニアを目指すならアプリエンジニアとインフラエンジニアのどちらでも給料が良い方を選ぶべきですしね。
インフラエンジニアとアプリケーションエンジニアはキャリアチェンジが可能か?
結論から言うと可能です。
実際アプリケーションエンジニアだった人がインフラエンジニアとして活躍してたり、その逆もよく見ます。
どちらへのキャリアチェンジもやる気次第ですし、ちゃんと勉強すれば可能です。
最近ではどちらも知っててスキルも高いフルスタックエンジニアという人たちも一定数いるし、アプリとインフラの垣根はどんどんなくなってきています。
インフラの技術が進化してクラウド環境で簡単に構築できるようになったというのも一つの理由ですが、アプリ担当だからインフラ知らないとかインフラ担当だからアプリわからないといった事はどんどんなくなっていっておりどちらも知っている事がある程度常識にもなりつつあります。
インフラエンジニア とアプリエンジニアの共通項
インフラエンジニアとアプリエンジニアのどちらを目指すにしても共通して覚えておいた方が良い事があります。
それは何か一つの技術を覚え始めたらとことん追求して基礎から応用までちゃんと身につける事。
理由は明確で、一つの事をちゃんと学び究めておくと他の物事に応用がきくから。
アプリエンジニアなら一つの言語をちゃんとマスターしておけば、言語が変わってもプログラムを組む事ができる。
インフラエンジニアは一つのOSからミドルウェアまで知識を持っておけば環境が変わっても対応できる。
一つの物事をある程度極めるというのはそれだけ応用力を持つと言う事。
まず一つ得意なスキルを身につけ、それから他の事を身につけても遅くないのでまずは自分はこれが得意!!というものを見つけましょう。
まとめ
インフラエンジニア 、アプリエンジニアどちらも必要な仕事です。
ただ、どちらに向いてるのか?やってみたら思ってたのと違った。アプリケーションエンジニアやりたかったけどインフラの方が向いていた。
そんな事は日常茶飯事ですので、まずは「やりたい!!」と思った職種をやってみて、会わないと思ったら配置換えも検討しましょう。
どちらもやりたい!!という人もいますし、実際どちらも実務として取り組んでいるエンジニアは一定数いますので決して無理な話でもありません。
自分の気持ちを優先してやりたい事をやっていきましょうね。