現役SEが教える!システムエンジニアとプログラマーの違いは?
現在、多くの人がIT業界への転職を検討しています。
しかし、最近のIT業界は一言で
「エンジニア」
と言っても、様々な職種に細分化されています。
プログラミング言語の多様化や、企業同士の差別化、そして技術革新により、求められるスキルや経験も変わってきます。
その最も基本的な部分として
「システムエンジニアとプログラマーの違い」
が挙げられます。
特にこれから、IT業界へ未経験転職しようと考えている人や、既にIT業界に入っているものの
「自分の今後のキャリアを考えると、転職を考えようかな」
と考えている人に対して、この違いをお話できればと思っています。
私は、現役でシステムエンジニアを行っており、過去
システムエンジニア:5年
プログラマー:3年
という形で働いてきました。
また、複数社に正社員として雇用される中で、感じる
「言葉の定義だけではない違い」
を踏まえて説明をしたいと思います。
この記事を読んで頂ければ、現場のリアルな情報を得た上で、
「最適な転職活動やキャリアプランニング」
が可能になるかと思います。
システムエンジニアとプログラマーの違い
では、まずはシステムエンジニアとプログラマーの違いについて、色々な側面からお話します。
仕事内容
まず、仕事内容の違いとしては、プログラマーが
「開発」
を基本とするのに対して、システムエンジニアの業務内容は、
・お客さんのヒアリング
・要件定義
・設計
・開発
・運用保守
など、幅広い業務であることが挙げられます。
これは、企業によっても定義が若干異なることがあり、私が過去にいた企業は、
システムエンジニア:ヒアリングから設計書を作るまで
プログラマー:開発とテスト/製品リリース
運用保守システムエンジニア:運用保守
というように、部門が分かれていました。
運用保守を行う仕事も、システムエンジニアという名前では有りましたが、実際にはオペレーターとしての位置づけが強く、顧客からの質疑応答やバグの調査を行っていました。
その位置づけは、設計を行うシステムエンジニアと明確に分かれており、違う部署でした。
この様に、企業や製品によっても、その位置づけは異なりますが、一般的にはプログラマーは開発を専門とし、システムエンジニアは、設計などのいわゆる「上流工程」を行うものという認識があります。
労働環境
次に、労働環境ですが、職場の雰囲気に影響を受けるのは大前提ですが、システムエンジニアの方が、周りから振り回される事が多いです。
というのも、システムエンジニアの仕事は取引先のシステム担当者の人や、取引先の現場の人、自社の営業などのように、幅広い人との関わりがあります。
それらの人のスケジュールを調整し、打ち合わせを重ねるなどが必要です。
更に、取引先の人も、通常業務を抱えている事が多く、業務に支障の出ない夕方からの会議を希望されるなど、顧客に振り回されることが多々あります。
その中で、納期は決まっていますから、それに合わせて設計書を作成したり、プログラマーに依頼を投げたりするため、非常に厳しい労働環境になりがちです。
一方で、プログラマーは基本的には納期通りに開発を進めれば良いです。
幅広い業務範囲がない分、仕事に集中しやすい環境ではありますが、システムエンジニアに振り回されることは多々あります。
例えば、管理能力の低いシステムエンジニアとチームを組む場合、
・度重なる仕様変更によって修正が必要になる
・ヒアリング不足で十分な機能が作れていないままプロジェクトが進む
・ズルズルと仕様が決まらないまま納期が近付き、急ピッチを強いられる
などの危険性があります。
必要な知識や経験
次に、必要な知識や経験ですが、どちらも基本的なIT知識や開発に関する知識は必要です。
システムエンジニアであっても、きちんと開発に関する知識が無ければ
・何が実装できるのか
・どの位の納期で作ることが出来るのか
・どの位のリソースが必要か
など、決めるべきことを決められません。
きちんと開発に関する知識が無いシステムエンジニアもたまに見かけますが、プログラマーへの指示が的確でなかったりなど、スムーズに仕事を回せない事も多いです。
加えて、システムエンジニアに求められるのは、顧客の業界や会社に関する「業務知識」や「世の中にあるシステムの機能概要」です。
顧客にヒアリングする際に、相手は自分の業界や会社のことしか知らないケースが多々あります。
システム的な話が出来ない人も多く、
「なんとなく良い感じにして」
なんて言われ方をすることもあります。
そんな中で、正確に相手の業務を把握し、それをどの様にシステム化するのか。
これには、多くの知識や経験が必要です。
更に、その業務に対して最適なシステムの提案をしようと思うと、
「世の中にはどの様なシステムが存在するか」
「どの様なAPIを活用できるか」
「一般的な〇〇というシステムは、どのような仕組みか」
を理解しておく必要があります。
一方のプログラマーは、より専門的な技術や知識が必要です。
同じシステム開発をするにも、
・スクラッチで開発する
・フレームワークを利用する
・APIを活用する
など、方法は様々です。
単にロジックだけの問題ではなく、開発速度や実行速度などを視野に入れて、より最適なシステムを作る必要があります。
これらを、システムエンジニアが出してきた工数や予算から実行する力が必要とされます。
キャリアプラン
次にキャリアプランですが、業務範囲や必要とされる知識からもわかるかと思いますが、システムエンジニアとして働いている方が、色々なキャリアが描けます。
例えば、複数のシステムエンジニアに指示を出すような「プロジェクトマネージャー」や「プロジェクトリーダー」。
システムに関する知識をしっかりと学んだ上での「営業職」への転身。
システムに関する提案力や、問題解決能力を活かした「ITコンサルタント」。
他にも
・アーキテクト職
・新しい仕組みを作るための「研究開発職」
・エンジニアリングマネージャー職
・各専門分野のエンジニア
など、色々なキャリアプランが可能です。
一方で、開発だけをしてきたプログラマーと言うのは、一般的に
・プログラマーとしてスキルを磨き続ける
・システムエンジニアとして上流工程を学んでいく
という2つの選択肢を強いられます。
よほど、技術力が高ければ、特化したエンジニア職への転身も可能ですが、明確にそれが提示できるプログラマーは、少数派であると言えます。
報酬
報酬としては、一般的にはプログラマーの方が低く、システムエンジニアの方が高いと言われています。
給与水準も企業によって異なりますが、大きな違いとしては「昇進」。
多くの企業では、
「管理職 = マネジメント能力が必要」
という認識です。
そのため、プログラマーとして技術を磨いていくよりも、システムエンジニアからプロジェクトリーダーやプロジェクトマネージャーになって、管理職を目指す方が、管理職手当分の給料が高くなります。
それによって優秀なプログラマーが退社しないように、企業によっては
「専門技術を磨くプログラマーとして現場には出るが、待遇は管理職相当」
という人事制度を設ける会社もあります。
プログラマーの中には、
「人と関わるのが苦手だからこの仕事を選んだ」
「マネジメントを学ぶくらいなら、新しい技術やスキルをどんどんと学んで、常に前線にいたい」
という人も多いです。
だからこそ、こういった価値観のプログラマーでも、待遇面で不満が出ないように人事制度を変えている企業もあるのです。
その他
その他の違いとして、現場を通して感じることは、
「システムエンジニアの方が、責任が重く、資質が問われる」
ということです。
システムエンジニアは、システム開発において最も重要な部分です。
特に設計は、上手くいかない状態で次の工程に進んでしまうと、後から変更が難しいケースが多いです。
また、顧客へのヒアリング能力も、個人差が非常に大きな部分です。
そのため、マニュアル化が難しく、資質の差が大きく出ると日々感じています。
一方で、プログラマーはシステムエンジニアによっても違いますが
「単純な開発作業だけを振られる」
ということもあります。
私が以前いた会社では、設計の段階で、
・関数名
・引数とその型
・戻り値
までを指定している所も有りました。
全て設計書に落とし込まれていて、細かい処理部分以外は、考える必要さえもなかったのです。
ここまで資料として落とし込まれていると、プログラマーとしての創意工夫は必要なく、単に慣れによって
「資料を読み込んで、内容を網羅する」
ということだけが求められます。
結果として会社から評価されたり、重宝されるのも、システムエンジニアではないかと感じています。
システムエンジニアとプログラマー。どちらを目指すべきか
さて、2つの職種を色々な観点で比較してきましたが、これから未経験で転職を考える際に、どちらを目指すべきでしょうか。
もしくは、現在既にIT業界にはいるけど、スキルを付けたいと考えた際に、どちらを目指すべきでしょう。
ここでは、それぞれに向いている人について見ていきます。
システムエンジニアに向いている人
システムエンジニアに向いている人は、ヒアリング力やコミュニケーション能力が高い人だと感じています。
どれだけ技術力があっても、顧客の要望に答えられるシステムを開発できなければ意味がありません。
だからこそ、きちんとクライアントの話を聞いて、細かく内容を詰められる人は、システムエンジニアに向いていると言えます。
更に、顧客の課題の根本的な問題を見抜き、
・システムで解決するのか
・運用で回避するのか
・そもそもその業務を止めるのか
など、適切な回答を導き出すためのクリティカルシンキングなども重要といえます。
プログラマーに向いている人
プログラマーに向いている人は、個人で黙々と作業ができる人です。
どうしても、プログラマーは開発そのものの時間が長くなるので、息抜きが難しいです。
場合によっては、数ヶ月の間、進捗報告のための定例会以外で人と話さない・・・という状況も有り得ます。
この様な状況では、
「1つの問題を悶々と悩んでいたけど、後から考えたら簡単に解決できる問題だった」
という様な事が起こります。
そうならないためには、個人で黙々と集中して作業を行う傍らで、自分の作業や全体業務を俯瞰して見る冷静さも必要でしょう。
コミュニケーション能力は、システムエンジニアほど求められる事はありませんが、技術力は年数を重ねるごとにハードルが上がります。
どちらも目指せる環境ならシステムエンジニアを目指すべき
もしも、1つの会社でシステムエンジニアとプログラマーの、両方の職種を選べる職場環境に転職できるなら、個人的にはシステムエンジニアを目指すべきだと考えています。
その理由は、違いの部分で説明した通り
「システムエンジニアの方が、会社として重宝されやすい」
だからです。
更に、キャリアプランの広さや、業務で経験できる事の幅の広さからしても、システムエンジニアの方が、メリットが多いです。
また、今の時代フリーランスへの転身を考える人も多いかも知れません。
そうなった時に、プログラマーから転職する際には
「〇〇の言語に関する実務経験」
「〇〇のフレームワークに関する実務経験」
が重要視される可能性が高いです。
開発がメインなので、求められるものも、実務経験を伴ったスキル面になりがちです。
しかし、システムエンジニアやその先のプロジェクトリーダー・プロジェクトマネージャーの場合には、言語を問わない募集も多いです。
むしろ、プロジェクトの期間や人数などの規模、その中でどの様なことを経験してきたかの方が重要視されるでしょう。
そう考えた時に、依頼の受けやすさとしてもシステムエンジニアの方が有利だと考えられます。
優秀なプログラマー・システムエンジニアはAMELAに
今回は、プログラマーとシステムエンジニアの仕事の違いについて見てきました。
本文中でも触れましたが、多くの点で「職場による」ため、実際に働いてみないとわからない事もあるでしょう。
また、自社で製品開発をしているのか、開発を請け負っているのか、人材を派遣しているのかによっても、システムエンジニア・プログラマーなどの待遇や仕事内容は変わってきます。
AMELAでは、多くのシステム開発を行ってきており、IT人材の派遣やオフショア開発、ITコンサルティングなども行っています。
もしも現在、IT人材が必要な場合や、開発が必要な場合には、是非ご相談頂ければと思います。