未経験からシステムエンジニアとプログラマー、目指すべきはどっち?

learning_header 転職対策
Which is best way that you become engineer

こんにちは。

この記事を読んでいる方は、

未経験からだと、システムエンジニアとプログラマーのどっちになるといいの?
それぞれの違いは何となく分かるけど、結局自分はどういうキャリアを考えたらいいの?

という悩みを抱えているのではないでしょうか。

確かに未経験でエンジニアになって、異なる違う役割の「プログラマー」と「システムエンジニア」のどちらかを選べ、と言われても迷っていまいそうです。

そして、未経験の業種に転職する場合、どのような道があるのかさえ分からないので、さらに迷ってしまいますよね。

  1. この記事を読んで分かること
  2. 何故このことが言えるのか?
  3. システムエンジニアとプログラマーの違いについて
    1. システムエンジニアとは
    2. プログラマーとは
  4. システムエンジニアとプログラマーの業務の違い
    1. システムエンジニアの仕事内容
      1. 要件分析・要件定義
      2. 基本設計
      3. 詳細設計
      4. テスト
    2. プログラマーの仕事内容
      1. 詳細設計
      2. プログラミング
      3. テスト
  5. システムエンジニアとプログラマーで必要とされるスキルのち外
    1. システムエンジニアに必要とされるスキル
      1. クライアントへのヒアリング能力
      2. コミュニケーション能力
      3. システムやプログラミングの知識
      4. マネジメントスキル
    2. プログラマーに必要とされるスキル
      1. プログラミング能力
      2. コミュニケーション能力
  6. 未経験から目指す場合、システムエンジニアとプログラマーのどちらがオススメか?
  7. 僕がシステムエンジニアをおすすめする理由6つ
    1. 年収がシステムエンジニアの方が高くなるから
    2. 未経験から転職する際の敷居が、システムエンジニアの方が低い
    3. システムエンジニアで身につけたスキルを、他の仕事にも転用しやすいから
    4. プログラマーは「35歳限界説」があるから
    5. システムエンジニアの方が大企業に行きやすい
    6. システムエンジニアの方が事業全体が見えやすいから
  8. とはいえ、最初からシステムエンジニアになるのはリスクあり
  9. 結論

この記事を読んで分かること

この記事を読んでいただければ、

・システムエンジニアとプログラマーの業務内容の違い
・未経験から転職する際、プログラマーとシステムエンジニアのどちらを目指せばいいか? 

がわかります。

この後、プログラマーとシステムエンジニアのざっくりとした役割の説明と、日本の企業の特性を踏まえた上で、今後キャリアとして選ぶべき役割を説明します。

未経験からエンジニアになるときは本当にいろいろなことに悩むと思います。
この記事を読むことで、そんな悩みを少しでも悩みを減らしてください!

これらの内容を説明していきます。

何故このことが言えるのか?

僕は、前職に入社した直後は、エンジニアとしてプログラミングをしていました。

そしてその後、前職と現職の両方で、システムエンジニア (プロジェクトマネージャー)としてチームのリードをしてきました。

ですので過去の経験から、プログラマーとシステムエンジニア、両方のよいところ、悪いところをあなたにお伝えすることができます。

システムエンジニアとプログラマーの違いについて

システムエンジニアとプログラマーの違いについて

他のブログでもいろいろ紹介されている内容なので、ここではさらっとだけご紹介します。

システムエンジニアとは

システム開発は一般的に、要件定義⇒設計⇒製造⇒試験という流れで進みます。
システムエンジニアはその中で、要件定義〜設計の部分を担当します。

最初は、ビジネス要件やお客さんのニーズのヒアリングを行います。
それをシステムをどう作るか?を定義する「システム要件」に落とし込みます(ここが要件定義や設計に該当します)

また、システム要件を作りつつ、どのくらいの費用と時間がかかるかを見積もったり、プロジェクト開始後はプロジェクトが問題なく進んでいるかの管理をするなど、マネジメント寄りの業務も行います。

お客さんのリクエストを咀嚼しつつ、「今後仕様変更がありそうな箇所」を見抜いてプログラマーに伝えるなど、非常に曖昧な状況の中プロジェクトを推進する必要があります。

プログラマーとは

プログラマーは、システムエンジニアが作った設計書や仕様書をベースにプログラミングを行います。

プログラマーも、言われたことだけを単純にプログラムに書き起こしていくだけではなく、

・今後の拡張性を踏まえたプログラム
・今後のメンテナンス性を考えた上でのプログラム

を書く必要があるため、難易度の高い業務になります。

また、自分がプログラミングをした部分に対しては、不具合なく、問題なく動くことを確認するためにテストを行います。

システムエンジニアとプログラマーの業務の違い

システムエンジニアの仕事内容

要件分析・要件定義

お客さんの

xxxという機能がほしい
xxxをやりたい

という声を踏まえて、どのようなシステムにするか?の方向性を検討します。

お客さんはシステムに詳しくない人もいるため、ヒアリングのときは、

お客さんはxxxと言っているけど、本当にやりたことはyyyなのではないだろうか?

というように、想像を膨らませながらヒアリングを行います。

ここでお客さんのニーズを聞き間違えると、出来上がったものが全く望まれないものになってしまいます。

また、もしシステム的に実現難易度が高かったり、実現できないものに対しては、その代替案を提案し、お客さんとの認識をすり合わせていきます。

基本設計

「要件分析・要件定義」のフェーズで決めた要件をベースに、システムの概要を決めていきます。

もし画面を持つようなシステムであった場合は、UI仕様を決める人や、デザイナーとも一緒になって画面の仕様を決めることがあります。

また、システムの概要をベースに予算やスケジュールに関してもお客さんとすり合わせていきます。

詳細設計

基本設計で決めたシステムの概要を、部分ごとに分割してその詳細を決めていきます。
ここは、プログラマーと一緒に進めるのが一般的です。

何故なら、システムエンジニアはプログラミングまでは携わらないため、プログラマーの、よりプログラミングに近い観点も必要になるためです。
プログラマー抜きで進めてしまうと、実現難易度が高かかったり、工数がかかりすぎたりする設計になってしまうことがあります。

テスト

プログラマーが作ったシステムが意図通り動くかを確認します。
もし不具合があった場合はプログラマーにそのエラー箇所や発生条件を伝え、修正してもらいます。

プログラマーの仕事内容

詳細設計

基本設計をベースに、それぞれの部分ごとの詳細な設計を行います。

この部分はシステムエンジニアと認識をあわせつつ一緒に進めることが一般的です。
お客さんの生の声を聞いているのがシステムエンジニアであるため、その背景情報も踏まえた上で判断すべきポイントもあるためです。

このフェーズでは、プログラムの詳細な流れや主要な関数の定義まで行います。
ここでどこまで細かく検討できるか?で、この後のプログラミングのフェーズがどのくらい楽になるか?が変わってきます。

プログラミング

そのプロジェクトごとに適切なプログラミング言語を用いてプログラミングを行います。

どのようにプログラミングするか?の方針は、この前の段階の「詳細設計」まででほぼ固まっていることもあります。
ですので、プログラミングの作業では、「ほぼ決まった内容をプログラムに落とし込むだけ」ということもあります。

テスト

開発したプログラムが想定通り動いているかを確認する作業になります。
いろいろなテスト手法はありますが、基本的には「テストケース」と呼ばれる、テストすべき観点やテストする方法が記載されたドキュメントに従い、機能を1つずつ確認していくことになります。

この部分は、会社やプロジェクトによっては「QAエンジニア」と呼ばれる人がいることもあり、そういった人と協力してテストを行うこともあります。

テストの結果、問題や不具合があった場合、その問題を解析します。
そしてプログラムの修正、そして再度テストを行います。

システムエンジニアとプログラマーで必要とされるスキルのち外

システムエンジニアに必要とされるスキル

クライアントへのヒアリング能力

クライアントの言う抽象的なコメントや要望を受け入れて、具体的なシステムに落とし込むだけのヒアリング能力が必要です。

ですので、相手の言うことを正しく理解するのはもちろんですが、その裏に潜んでいる本当のニーズを探り当てることができるような能力も必要となります。

コミュニケーション能力

システムエンジニアは、基本的に他の人とコミュニケーションをする仕事です。

ですので、言われたことを他の人に正しく伝えるスキルが必要なのはもちろん、必要によってはチームのメンバーのモチベーションを上げるような立ち振舞いが必要になったりと、非常に高いコミュニケーション能力が必要となります。

システムやプログラミングの知識

システムエンジニア自身がプログラミングをすることはほぼありません。

ただ、ソフトウェアのシステムやプログラミングの知識がないと、重要な点をおさえられない可能性があります。

ので、システムエンジニアにはプログラミングの知識や、「この仕様はエンジニアが大変だろうな・・・」という嗅覚が必要です。

マネジメントスキル

システムエンジニアは、以下のようなものをマネジメントする必要があります。

・スケジュール
・予算
・システムの方向性
・顧客の期待値

それぞれが複雑に入り組んでいるため、どのスキルも欠けていてはシステムエンジニアの仕事をすることはできません。

「顧客の期待値」は普段聞き慣れない言葉かもしれませんが、顧客に対して、今作っているものがどのくらいのアウトプットになりそうなのか?の目線をあわせるスキルとも言えます。

このスキルがないと、プロジェクトの終盤で

あれ、こんなシステムはお願いしてないよ?

と言われる可能性があります。

プログラマーに必要とされるスキル

プログラミング能力

プログラマーにとって一番重要なスキルは、もちろんプログラミングの能力です。

プログラマーの能力が低いと、どれだけシステムエンジニアがしっかりとヒアリングしてきたとしてもそれを形にすることができないため、結果的にはクライアントの要望に沿っていなかったり、メンテナンス性の低いシステムになってしまうことがあります。

コミュニケーション能力

システムエンジニアや他のプログラマーと相談しつつプロジェクトを進めるため、お互いの言っていることを正しく理解したり、違う意見を持っていたら論理的に「違う」ということを伝えられる必要があります。

プログラマーはプログラミングだけやっていればいいと思われがちですが、実は非常に高いコミュニケーション能力が求められます。

未経験から目指す場合、システムエンジニアとプログラマーのどちらがオススメか?

僕は、これから未経験としてエンジニアを始めるのであれば、

 システムエンジニア

を、目指すことをオススメします。

それは、日本における企業の特性上、

年収
スキル
今後のキャリア

など、いろいろな観点でシステムエンジニアに軍配が上がるからです。

ここからは、何故、未経験から目指すのはシステムエンジニアの方がいいのか?の理由を説明していきます。

僕がシステムエンジニアをおすすめする理由6つ

システムエンジニアをおすすめする理由6つ

それでは、僕が未経験エンジニアから転職する場合に、システムエンジニアをおすすめする理由を6つ、紹介します。

年収がシステムエンジニアの方が高くなるから

日本の会社は、より上流工程の役割に高い年収を支払う傾向があります。

厚生労働省が実施している賃金構造基本統計調査を元にすると、それぞれの全国平均は、以下の通りです。

・システムエンジニア: 568万9000円
・プログラマー: 425万8000円 

ざっくりと140万円くらいの差があります。
この差は正直、かなり大きいですね。

これが日本ではなく、GAFA (Google, Amazon, Facebook, Apple)であれば、プログラマーでも年収2000万円くらもらえたりします。

さらに、未経験からプログラマーになる場合は「未経験採用枠」ということで、425万円もらえない可能性も高いです。

日本だとプログラマーで年収1000万円にいかないのか?
日本でも、大企業でプログラマーに高い年収を出す企業であれば1000万円を超える可能性はあります。
ただ、1000万円を超える人は本当に少数ですし、そういった人は多くの努力を何年も続けているのが事実です。

未経験から転職する際の敷居が、システムエンジニアの方が低い

これは、決してシステムエンジニアの方が簡単、ということではありません。
システムエンジニアは非常に難しい職業ですし、プログラマーには要らない、いろいろな経験やスキルが必要となります。

ただ、「未経験からエンジニアになる」という観点からいうと、システムエンジニアであれば、あなたが前職などで培ったスキルや経験を活かせる可能性があります。

例えば、

・前職で営業をやっていた人: 営業力を活かし、顧客に対してシステムを提案
・前職で接客をやっていた人: コミュニケーション能力を活かし、顧客の潜在ニーズを聞き出す

などなど、前職のスキルを活かせるところが多いのではないでしょうか。

一方、プログラマーになると、プログラミングスキル一本での勝負になります。
プログラマーは何年もプログラミングだけをやってきたような人たちです。
そういう人と勝負するのは、やはり分が悪い戦いになってしまいます。

システムエンジニアで身につけたスキルを、他の仕事にも転用しやすいから

次の理由は、システムエンジニアの方が「業務内容的に、他の仕事にも転用しやすい」という理由です。

例えばあなたがシステムエンジニアとしてプロジェクトをリードしたとします。
その後、何かのきっかけでエンジニアから別の職種に転職したとしても、その「プロジェクトをリードした経験」は、必ず生きてきます。

なぜなら、(その対象がシステムかどうかという差分はあるにせよ)プロジェクトをリードするスキルは、全ての職業に共通のスキルだからです。

また、日本の会社では、一番難しいスキルが

人と人の間の利害関係の調整
組織間の調整

だと言われています。

システムエンジニアになればそんな「一番難しい」仕事をやることになるので、あなたにはそのようなノウハウが溜まることになります。

プログラマーは「35歳限界説」があるから

プログラマー35歳限界説

また、プログラマーは一般的に「35歳限界説」と考えられています。

これは、35歳を過ぎたら現場で手を動かすのではなく、プロジェクトや人/チームのマネージメントをするべき、という考え方です。

ここ最近はこの考え方も大分薄れつつあるようには思いますが、特に大企業は引き続きこの傾向が強いように思います。

35歳を過ぎてからの転職はマネジメント経験が求められます。
僕も34歳のときに転職しましたが、そのときもすでに、面接を受けたどの企業からもマネジメント経験は求められました。

ですので、これから未経験でエンジニアになる人は、人やプロジェクトのマネジメントに近い、システムエンジニアの仕事にをした方が、今後のキャリアとしては良いと考えています。

システムエンジニアの方が大企業に行きやすい

大企業への転職に興味がない方はこの項目は該当しません。

ただ、特にメーカーの大企業だと、エンジニアになっても基本的に自分で手を動かさず、外注で雇ったエンジニアにプログラミングを任せることが多々あります。
というか、ほぼ全てのケースでこのような体制です。

一方、IT企業だと社員自らが手を動かすことも多いです

今後古くからあるメーカーの大企業への転職を考えているのであれば、システムエンジニアとして、プロジェクトコントロールや組織コントロールのスキルを持っていた方がよいです。
もっというと、このスキルがないと古くからある大企業への転職はできないとも言えます。

システムエンジニアの方が事業全体が見えやすいから

システムエンジニアは、ビジネス担当や企画担当などの事業をコントロールしている側のメンバーとやりとりをすることが多くなります。

そのポジションにいれば事業の全体像が見えます。
結果として、事業全体の問題点に気づく機会も増えます。

また、日本の会社で年収を上げるには、目の前のタスクを夢中でこなすのではなく、「いかに自分の役割よりも広い視点を持って事業に貢献する」という活動が必要になります。
そのためにも、自分の周りのチームや事業の問題点を探しつつ、自分の役割を超えて改善施策をとれる必要があります。

これらの意味で、システムエンジニアになった方が、会社の中でも年収を上げやすくなります。

とはいえ、最初からシステムエンジニアになるのはリスクあり

最初からシステムエンジニアになるのはリスクあり

ここまで「未経験からエンジニアになるならシステムエンジニアがおすすめ」という内容で書いてきましたが、ただ、いきなりシステムエンジニアになるのはリスクがあります。

何故なら、最初からシステムエンジニアになると、

現場のエンジニアの苦労が分からないシステムエンジニアになってしまう

からです。

システムやエンジニアのことが分からないくせに偉そうなことをいうシステムエンジニアは、プログラマーなど他のメンバーから嫌われることも多いため、まずはある程度プログラミングの経験を持っておいた方が、システムエンジニアとしての価値を発揮しやすいと思います。

プログラマーとして1年でも2年でも経験をした後、システムエンジニアとして顧客と話したり、プロジェクトのリードをするのが一番よいかと思います。

僕の一番のオススメは、

プログラミングやシステムのことが分かるシステムエンジニア 

です。プログラマーにも、プログラミング経験がない他のシステムエンジニアにもない強みを作れるため、社内であなただけの強みや立場を構築できるようになります。

ここまで説明してきた内容を最後にひっくり返した感じですが、特に未経験からの転職のときは、

自分が最終的に目指すポジション

を明確にする必要があるため、今回の記事を書きました。

このあたりの詳細は、下記の記事にもまとめていますので、そちらも合わせてご確認ください!

結論

それではこの記事の結論です。

未経験から目指すのはプログラマー?システムエンジニア?
未経験からエンジニアになる場合は、システムエンジニアを目指した方が、様々な観点から考えてよい
ただ、いきなりシステムエンジニアになるとエンジニアリングのバックグラウンドがない状態になるので、まずはプログラマーとして数年経験を積むのがおすすめ。

今回は以上です!
ここまで読んでいただき、ありがとうございました!

コメント

タイトルとURLをコピーしました