システムエンジニアになるには?AIがおすすめ?将来性・PGとSEの違いまで解説!
プログラミング学習公開日 : 2019年12月02日 | [更新日] 2023年05月01日
どうしたらSEになれるのか?資格は必要ないのか?
そういった疑問があるからこちらにたどり着いたのでは?
業界で働くエンジニアになる方法として、一番の近道はプログラミングスキルを身につけてPG(プログラマー)から・・・と考える人は多いと思います。
SEやPMの求人はWebで調べてみると、
「xx人以上のプロジェクト経験あり優遇」「システム構築経験xx年以上」
というように実務経験が必要となる条件が多く、独学でもなれるPGと比較してハードルが高いのもその要因かと思います。
では、PGとしてIT業界に入ったとして、どのようなスキルを身につけたらSEやPMにキャリアアップしていけるのでしょうか。
本記事では実務の経験がまだないエンジニア初心者にもわかりやすいよう、PG、SE、PMの仕事内容に触れ、それぞれが求められるスキルについて説明、どうしたらシステムエンジニアになれるのかを解説します!
さらにシステムエンジニアの将来性についても解説するので、ぜひ一読ください!
目次
- そもそもシステムエンジニアとは?
- SEは分かったけど、PGとPMって?
- PGとSE、PMの具体的な違いって何?
- PGとSE、PMの平均年収の違いはどれくらい?
- SE(システムエンジニア)になるのに必要な事とは?
- SE(システムエンジニア)でとりあえずとっておきたい資格
- 独学でSE(システムエンジニア)になる方法
- PGとしてスキルアップする方法
- SEとしてスキルアップする方法
- システムエンジニアの将来性は?
- システムエンジニアはAIを学ぶべき?
- システムエンジニアとして今後学ぶべきことは?
- システムエンジニアとして生き残るためにはネットワークエンジニアを目指そう
- 今システムエンジニアとして就職すべき企業は?
- フリーランスのシステムエンジニアになるという道もある
- フリーランスSEの仕事内容
- フリーランスSEのメリット・デメリット
- フリーランスSEになるのに必要なスキルは?
- フリーランスSEに向いている人って?
- フリーランスSEの年収
- フリーランスSEの仕事の探し方
- どうやって仕事を受注する?おすすめはエージェント
- 未経験の方は、まずスクールから
- 断言しますが、システムエンジニアの将来性はあります
- まとめ
そもそもシステムエンジニアとは?
システムエンジニアは名前の通りシステムを開発するエンジニアのこと。
システム開発には、基本お客様とシステムの仕様を決めていく上流工程と、実際にシステムを開発してテストを行っていく下流工程がに分かれますが、システムエンジニアは主に上流工程を担当することが多いです。
システムエンジニアの仕事内容や平均年収などについてみていきましょう。
クライアントの要望を形にするのがシステムエンジニア
システムエンジニアは、プログラミングの技術を使って課題を解決する仕事です。
そのためには、ヒアリングをしてクライアントが抱えている課題を正しく認識し、クライアントの要望を形にする必要があります。
また、情報システムを開発するためには、プログラマーやインフラエンジニアなどのと専門的な内容の打ち合わせが必要です。
ですので、システムエンジニアはITについての知識だけでなく、コミュニケーション能力が求められます。
システムエンジニアの具体的な仕事内容
なお、クライアントの要望を実現するために情報システムを構築したり、既存のシステムに機能を追加する仕事は、システムエンジニア1人では実現できません。
情報システムの構築や修正に必要なプログラマーなどの人員も必要です。
そして、それらの人員を手配するのもシステムエンジニアの仕事です。
さらに、クライアントと協議して課題を明確にし、それを解決する情報システムの仕様を決めたり、日程やコストなど、クライアントと様々な調整を行うなど、その仕事の範囲は多岐に渡るといえるでしょう。
そのため、ITエンジニアでありながら、プログラムを書いたりコンピュータの設定に直接関わっていない、というシステムエンジニアもいます。
SEは分かったけど、PGとPMって?
SEについては先ほどみたのでわかると思いますが、PGとPMはどのよう職種なのでしょうか?
PG(プログラマー)とは?
PG(プログラマー)はシステムの仕様書や設計書を元に、プログラムのコードを作成する職種です。仕様書や設計書に書かれた動作をするプログラムを書くだけでなく、プログラムのコードが設計書どおりに動くかどうかを確認する「テスト工程」においても活躍します。
システム開発においては、後述するPM(プロジェクトマネージャー)やSE(システムエンジニア)が作成したシステムの仕様と計画にもとづいてコーディングの作業を行います。
PM(プロジェクトマネージャー)とは?
PM(プロジェクトマネージャー)はその名のとおり、システム開発プロジェクト全体の管理を行う責任者の役割です。
SEやPGと大きく違うのはその「責任」の大きさで、クライアントから見ればプロジェクトに関する責任を問う立場になります。
あらかじめクライアントと合意した予算・期間・人員の範囲でプロジェクトが進行するよう、全体をしっかり確認しながら、場合によっては要員の補充やチーム編成の変更などを行う調整役となることもあります。
SEやPGは実際にプロジェクトが開始してからが主な活動領域になりますが、PMはそのプロジェクトが「xxシステムを○○の条件で開発するものになります」といったプロジェクト計画書を作成し、クライアントと合意するさらに上流の工程から関わる立場になります。
PGとSE、PMの具体的な違いって何?
PGとSEは全く違う仕事
IT業界にあまり詳しくないとPGとSEは似たようなイメージを持たれがちですが、どちらかというとSEはPGの上位スキルにあたります。
キャリアパスとしてもPGからSEにステップアップしていくケースは多いと思います。
ただ、包含しているのかというとそういうわけではなく、SEになって活動領域が広くなるとコーディング作業をメインで行う機会は減っていくことが多いです。
PGはプログラム開発が中心領域、SEはシステム設計が中心領域であり、お互いが連携してシステム開発にあたります。
SEはPGのためにシステム設計を行う仕事
SEは上流工程においてクライアントの要件から仕様を決めると書きましたが、たくさんの要件がある中で、何も考えずにひたすら仕様書を作っても開発作業はうまくいきません。
機能を分類してカテゴライズしたり、共通的に使う機能を切り出したりすることによって、PGが実現すべき機能範囲が明確になり、チームを割り当てての分業開発なども行えるようになります。
また、クライアントからヒアリングする要件は実際に動作する機能面だけでなく、それ以外の性能やセキュリティなど、「非機能要件」と呼ばれる項目もシステム設計に落とし込まなければなりません。
特にここで挙げた性能やセキュリティはプログラムコードにも影響する部分であるため、あらかじめ明確化しておく必要があります。
もう一点「PGのために」行う仕事として、開発のガイドラインを作成することがあります。以下のようなプロジェクトでの約束事や作業のルールを文書化し、PGがスムーズに開発作業を行えるように下準備をする、といった内容です。
・命名規則
・ソースコードの管理手順
・コンパイル(ビルド)手順
単にクライアントからの要件を設計書に落とすだけでなく、こういった周辺領域も一緒に整備してあげることによって、プログラムの品質やメンテナンス性が向上します。
PGはSEの設計を実現する仕事
PGはSEが作成した設計書をもとに、プログラムを作成していきます。
とはいえ、プロジェクトでのシステム開発ともなると一人で作るわけではないので、SEがいくつかに分類した機能単位でチームを作り、それぞれ開発作業を進めるようなケースがほとんどです。
そうして各チームが開発したプログラムをまとめて連携させ、クライアントの課題を解決するシステムとなっていきます。
ですので、PGは自分のチームが担当する機能を実現することはもちろんですが、他のチームのプログラムとやりとりする部分(インターフェースと言う)の開発は特に注意する必要があります。
PGの勝手な都合でインターフェースを変えることはSEの設計を変えてしまうことになり、他のチームの開発にも影響がでることになります。そのような設計に影響してしまうような事象については、SEに相談してチーム間の調整などをしてもらいましょう。
さて、PGを目指す人にとって気になるのは「プログラム言語はどれを選べば良いのか?」という点だと思いますが、昔はともかく今は主流となるプログラム言語はたくさんあります。
さまざまな言語を扱えることはアピールポイントになるかもしれませんが、あくまで「設計を実現する手段」にすぎません。
求人が多い、人気がある、などの理由でも問題ないので、どれか一つ、深いところまで全般的に使いこなせるプログラム言語を身につけることを優先しましょう。
そうすることである日急に別のプログラム言語でよろしく、と言われた場合でも身につけた置き換えて考えることで意外と乗り切れてしまいます。
PMはSEやPGをマネジメントする仕事
PMは先にも述べたとおり、自身で作成したプロジェクト計画にもとづき、開発プロジェクト全体をコントロールしていきます。
これまで説明したSEやPGとは立場が異なり、システム構築のための作業ではなく、プロジェクトそのものや携わるメンバーのマネジメントが主な仕事です。
プロジェクトがうまく進行するようにコントロールしていくわけですが、やはり随時問題が発生してしまうことは避けられません。
問題の対処がうまくいかず頻発してくると、だんだんとクライアントの対応も厳しくなってきます。そのような場面で、問題の原因究明から対策の実施、結果をクライアントに報告、といった形での顧客折衝も重要な仕事になります。
ですので、PMは問題が発生することを折り込み済みでうまくプロジェクトを回していくために、問題を早め早めに追求し、論理的な対策・リカバリープランを実行していくことが重要になります。
「なんだかよくわからないけどxxの処理をコメントアウトしたら問題が起きなくなった」といった報告をそのまま受け取るようでは、ツケが後に回ってSEやPGを苦しめる結果を招いてしまいます。
もう一つ、システム開発の実作業とは直接関係ないかもしれませんが、プロジェクト全体の雰囲気やメンバー間の雰囲気は作業効率に大きく影響します。
うまくいってるときは良いのですが、問題が発生するとつい「xxのチームのせいで・・・」といった意見が出てきて、不穏な空気が生まれてしまい、スムーズにできていた作業もギクシャクしてしまうこともあります。
そのようなとき、双方の言い分を聞きつつも、問題を共有してプロジェクト全体で解決していく雰囲気を作りあげる努力が必要になります。
プロジェクトに目を配り、精神的にもフォローすることで、メンバーが自発的に助け合うような雰囲気づくりへの貢献も重要です。
PGとSE、PMの平均年収の違いはどれくらい?
これまでのとおり、PG、SE、PMの仕事内容は、大きく違ってくることがお分かりいただけましたでしょうか?
となると、気になるのがそれぞれの年収ですが、政府統計の総合窓口 e-Statで公開されている「賃金構造基本統計調査」から、2018年のデータについて見てみます。
ちなみに日本人の平均年収はというと、民間給与実態調査によれば432万円です。
PG(プログラマー)の平均年収
PG(プログラマー)の平均年収を先ほどの政府統計データから算出すると、418.3万円となっています。この年収額はあくまで平均値なのですが、プログラマーという職業にはプログラム言語の需要により大きく変化することにも特徴があります。
株式会社ビズリーチが発表した「プログラミング言語別年収ランキング」のデータによりますと、上位5位は以下の結果となっています。(年収の値は求人情報の提示年収からの中央値とのことですので、実際に受け取っている年収とは限りません。)
Scala 600万円
Python 575.1万円
Kotlin 575万円
TypeScript 575万円
あれ?よく聞く言語のJavaやJavaScriptはどこへ・・・?と思われる方もいらっしゃるかもしれませんが、「よく聞く言語」=「それを扱うプログラマーもたくさんいる」ということになります。
雇用側からすると、それほど給料を釣り上げなくとも人材を集められることになります。
そういうわけで、プログラマーが高収入を得るためには、人気が上がってきているプログラム言語をいち早くマスターする、という手段も視野に入れておくべきです。
SE(システムエンジニア)の平均年収
SE(システムエンジニア)の平均年収を同じく政府統計データから算出すると、551.9万円となっています。
PGと比較して約130万ほど高い水準となっています。PGと比較して、仕事として関わる範囲がグンと広くなるため、必然の結果といえるでしょう。
SEは企業規模が大きくなる、年齢が上がるのと連動して年収も上がる傾向にあります。
そのような条件下だと、仕事内容としても取り扱う案件やプロジェクトの規模が大きくなっていくことが要因の一つではないかと思います。
プログラマーがプログラム言語のトレンドに左右されることも考慮すると、SEの年収は安定する一面があるので、PGからのキャリアアップのパスとしてSEになるケースは多いです。
PM(プロジェクトマネージャー)の平均年収
PM(プロジェクトマネージャー)の年収については、同じ政府統計データにはその区分がなく、同じ条件で比較できませんでした。
参考までに、DODAによる調査によると659万円となっています。ざっくりとですがSEと比較しても約100万円高い水準にあります。
SEが30歳代後半あたりから、プロジェクト経験を経てPMにステップアップする、というケースも多いとは思いますが、仕事内容のところで述べたとおり、全く違うスキルが求められることになります。
ですので、一般的にはプロジェクトマネジメント専門の教育受講や資格取得など、きちんと勉強してから転換するルートになるのが一般的です。
SE(システムエンジニア)になるのに必要な事とは?
システムエンジニアへのなり方に興味が持っている方は、これをやれば必ずなれる、という方法を探しているでしょう。
しかし、システムエンジニアになるための資格は無く、特別な学校を卒業すれば必ずなれる職業でもありません。
就職するためには、自分のスキルやメリットをアピールし、自分自身を売り込む努力が必要です。
とはいえ、システムエンジニアとしての就職を有利に進めるための方法が幾つかあります。
どうすれば、ライバルに差別化できるか考えたことはあるでしょうか。
また、就職先の企業で、こういう人ならいっしょに働いてみたいと思わせるスキルや経験を持っているでしょうか。ぜひ、そういった自分のメリットについて考えてみてください。
次から、システムエンジニアへのなり方を探している方に、資格や学歴などから、どのようなことが自分のメリットになるかついてご紹介します。
システムエンジニアになるには資格が必要?
一般的にシステムエンジニアは、クライアントと打ち合わせする機会が多く、さらにプログラマーなどプロジェクトでいっしょに働くエンジニアとも仕様や進捗などで協議する機会もたくさんあります。
そして、そういった打ち合わせや協議で必要なのは、ITに関する基礎的な知識です。
特に未経験からシステムエンジニアへのなり方を探している方には、まずは、IT業界では常識とも言える基本的な知識を身に着けることをおすすめします。
そして、そういった知識の勉強に有効なのがIT資格の取得です。
まずは、比較的簡単な基本情報技術者試験に挑戦してみましょう。
ただし、IT業界は、サーバーやネットワークといったインフラ系の資格を除いて、それほど重視されません。
基本情報技術者試験に合格したとしても、それは業界の常識を知っている程度の評価しかされないので注意してください。
専門学校や高専卒じゃないとダメ?
ITエンジニアの中でもWebプログラマーは、たとえ未経験だとしてもプログラミングスキルが評価される職業です。
しかし、システムエンジニアになるには、プログラミングスキルが必須、とは限りません。そのため、これを学べば必ずなれる、といったシステムエンジニアへのなり方はありません。
大手IT企業に就職された方の中には、適性を考慮され、学生時代の専門とは関係なくシステムエンジニアとして配属される方もいます。
そのため、専門学校や高専卒でないとシステムエンジニアになれない、ということはありません。
むしろ、新しいスキルを学ぶのに抵抗がなく、コミュニケーションに長けている方であれば、システムエンジニアとして成功しやすいと言えるでしょう。
システムエンジニアになるには大学卒じゃないとダメ?
残念ながら、未経験からシステムエンジニアになるためには、大手IT企業に大学から新卒として就職するのが最も近道です。
ただし、大手IT企業に入社できたとしても、システムエンジニアに必ずなれる訳ではありません。
優先的に配属してもらうために、なぜシステムエンジニアをやりたいのかを、明確にしておきましょう。
なお、システムエンジニアを募集しているのは大手IT企業ばかりではありません。
教育に熱心な企業の中には、未経験でも採用してくれる会社があります。
ただし、そういった企業への就職はライバルも多く、採用する側の条件にもよるので、この方法なら確実に就職できるといったシステムエンジニアのなり方はありません。
なぜシステムエンジニアになりたいか、また、入社したらどれだけ貢献できるか、など、自分自身のメリットをアピールできるように準備して面接に臨みましょう。
SE(システムエンジニア)でとりあえずとっておきたい資格
これまで解説したように、システムエンジニアへのなり方を探している方が、これをやれば確実になれる、という方法はありません。
しかし、システムエンジニアになる方にとって必須とも言える知識は、本などいろいろな方法で学べます。
そして、どれだけの知識を学べたかを確認するのによく利用されるのが資格試験です。
なお、IT系の資格は、取得が難しいインフラ系のメーカー資格以外はそれほど重視されません。
しかし、未経験からシステムエンジニアへの就職を目指すなら、ライバルとの差別化のためにも資格取得を目指しましょう。
次から、比較的簡単に取得できる、未経験からシステムエンジニアを目指す方におすすめの資格をご紹介します。
ITパスポート
ITパスポートは、独立行政法人であるIPA(情報処理推進機構)が実施している国家資格の一つであり、ITを利活用するすべての社会人・学生が備えておくべきITに関する基礎的な知識を持つことを証明する資格です。
なお、IPAが主催する試験の中では最も簡単な資格であり、IT系の科目を教える専門学校や高等学校の学生や、IT系の資格に興味を持つ社会人などが受験しています。
システムエンジニアへのなり方を探している方なら、この資格は最低限合格できなければなりません。
なぜなら、エンジニアを目指すライバルのほとんどが、この資格も持っている、または、より高度な知識を学んでいると考えられるからです。
なお、ITパスポートは他のIPAが実施している国家資格に比べれば簡単な内容ですが、毎年の合格率は50%ほどしかありません。
簡単だからと準備不足で受験すると合格できないので、よく知っている内容でもしっかり復習するなどし、確実に合格できるように準備して臨みましょう。
基本情報技術者試験
基本情報技術者試験も、前出のITパスポートと同じくIPAが実施している国家資格です。
ITエンジニアになったばかりの方を対象にした資格試験であり、IPAが実施している国家資格の中では、比較的レベルの低い問題が出題されます。
ただし、ITの知識を問う問題ではなく、情報システムの設計から開発、運用までを行う、ITエンジニアの担当者として身につけておきたい知識や技能を問う問題が出題されます。
そのため、システムエンジニアの業務に必要とされる知識を証明する資格なので、ぜひ、挑戦してください。
なお、基本情報技術者試験の合格率は、20%台とそれほど高くはありません。
毎年、多くのエンジニアが受験していますが、その多くが合格できていません。レベルは低いものの、それだけ難しい資格と言えます。油断せずにしっかり準備して臨みましょう。
キャリアアップしたい場合に必要な資格は?
キャリアアップしたいと思った際に有利になる可能性がある資格もあります。
資格があると自分の価値・できることを簡単に証明することができます。
システムエンジニア(SE)がキャリアアップするのに必要な資格が知りたい方は以下の記事をご参照ください。
独学でSE(システムエンジニア)になる方法
先ほど解説したように、これを学べば確実になれる、といった定番なシステムエンジニアへのなり方はありませんが、これを学べば近道になるスキルが幾つかあります。
そして、そういったスキルでも、独学で学べるのがプログラミングスキルです。
大手IT企業に勤めるシステムエンジニアの中には、プログラミングを全くやらない方もいますが、プログラミングスキルを身に付けており、それを活用しているシステムエンジニアはたくさんいます。
また、就職の際、ライバルと差別化するためにも、身に付けておきたいスキルといえるでしょう。
次から独学でも学べるプログラミングスキルの、おすすめの学び方についてご紹介します。
本で学習する
システムエンジニアへのなり方として、独学でプログラミングを学ぶ方法の定番と言えば、本で学習する方法です。
インターネットで何でも検索できる時代ですが、公開されている記事が、全て正しいとは限りません。
中には、間違った情報を公開している記事もあります。
その点、本、とくにIT関係の専門書は、ベテランのエンジニアが執筆し、編集者などが書かれた内容をチェックして出版しています。
そのため、信頼できる内容が書かれているので、ほんで学習するのであれば、専門書を読むことをおすすめします。
ただ、専門書は初心者が理解するには難易度が高いので、プログラミング学習サイトと併用・もしくは読み物として扱うことをおすすめします。
Webサービスで学習する
プログラミングをどこかに通って学ぼうとした場合、専門学校やプログラミングスクールなど幾つもあります。
さらに、インターネット上には学習サイトが幾つも公開されており、中には無料で利用できるサイトも人気です。
そして、インターネットに接続したパソコンが使えるのなら、Webサービスでの学習をおすすめします。
なお、プログラミングでは、プログラムの文法を覚えるだけでは実際には使えません。
プログラムを書いて、実行させながら学習するのが基本です。
しかし、経験の浅い方では、プログラムを書いたり、実行する環境を作れません。
インターネットが使えるパソコンさえあれば、プログラムを書いたり、実行できる環境のある、Webサービスを活用してください。
インターンとして実務をサポートして学習する
最近のIT企業は、学生にシステム開発の仕事を体験してもらうインターンに力を入れています。
そして、中にはインターンでお互い印象が良いことから、プログラマーやシステムエンジニアとして、その企業に就職できた方もいます。
なお、一口にインターンと言っても、1日だけ企業を訪問するだけのインターンから、1ケ月ほど就業体験ができるインターンまであり、どこまで体験できるかは企業によってもかなり違います。
インターンの内容によっては実際のプログラミングを体験できたり、システムエンジニアに必要なエンジニア同士のコミュニケーションの取り方を体験できたりします。就職にも有利なケースが多いので、積極的に参加しましょう。
スクールに通う
システムエンジニアになるには必ずしも資格が必要でないことが分かりました。
余裕があれば取得すればいいし、余裕がなければ必要がないというくらいの認識でいいと思います。
ITエンジニアにとって一番重要なのは、当たり前ですがプログラミングスキルです。
未経験から就職を目指すなら独学もいいですが、プログラマミング スクールに通うのが圧倒的に効率がいいので、未経験から就職・転職を目指している方はプログラミングスクールに通うことを検討してみてください。
PGとしてスキルアップする方法
ここでは、PG入門者向けとしてどのように振る舞うことがPGとしてのスキルアップにつながるか?について書いていきます。
最適なシステム設計はないか常に考えてコードを書く
PGとして、SEから渡された設計書を読みこんで、論理的に分解していってプログラムコードに落としていけるスキルは「基本中の基本」になります。
プログラムコードは実行されてなんぼのモノですが、やはり「言語」と呼ばれるだけあって、人間に理解しやすいコードである必要もあります。
つまり、動作するときにもキレイに速く動作し、なおかつ人間にも理解しやすく修正や拡張がしやすいプログラムの書き方ができれば、効率・品質ともに高いコードが書けるようになっていきます。
そのようにスキルを磨いていく中で、非同期処理などを覚えるとなんでもかんでもそれが良いと思って実装し、「難しいことできる俺カッケー!」みたいな意識が芽生えてしまうことがあります。
そういったコードは、後々トラブルを招き、PGが調べてみても「コード見ても何やってるんだかよくわからない・・・」といった状況になり、問題を大きくしてしまうケースになりえます。
今自分が取り扱っているシステムや機能において、「本当にそのような実装が必要なのか?最適なのか?」ということは常に念頭においてコードを書くように心がけてください。
ではどうやってそういう書き方を習得していくのか?という点ですが、やはり先人の知恵に学ぶところは多いと思います。プロジェクト内でコードが共有されているのであればそこから学ぶ、近くにそのコードを書いた人がいて質問ができるならなお良い環境にあると言えます。
またWebで調べれば「べからず集」「アンチパターン」「ベストプラクティス」などの情報が転がっているので、そういったものから学ぶのも良いでしょう。
プログラムは書けば書くだけテストする条件も増えますし、潜在的なバグも増えていきます。
ロジックをみてぱっと確認すべき条件がすぐわかる、無駄な処理がない、といったコードは後々になっても扱いやすいコードになっていきます。
既存のチームメンバーとの連携を意識して働く
自分が担当している機能が自分の書いたプログラムだけで動作するような規模なら問題ないのですが、業務としておこなうプログラムは既存のチームが開発したプログラム(コンポーネントと呼んだりもする)と連携して動作することがほとんどだと思います。
大きなプロジェクトになってくると、イッセイノセイで開発が始まって、同じタイミングでプログラム作業が終わって・・・と足並みそろうことはほぼあり得ないと言っていいでしょう。そのような場合に、既存チームの開発を遅らせないようにするた
め、一例ですが以下のような作業を依頼される場合があります。
・インターフェイス間で受け渡しするデータ(正常系データ、異常系データ)の提供
このようなオマケ的な開発作業をすることで開発作業をスムーズに進めることができますので、PGとしてはそういう依頼への対応も必要ということを覚えておいてください。
その他の例ですと、自分たちが作ろうと思った機能はすでに既存のチームメンバーが準備していた、というケースもあると思います。
プロジェクト全体でこれまでどのような機能が開発されてきたかという一覧や、その設計書がどこに格納されているかは真っ先に確認しておくべき事柄です。
知らずに二重に似たような処理を追加してしまったりするとややこしいトラブルの元になりますので、既存チームの成果物などはよく把握しておくようにしましょう。
自分の担当箇所だけでなく全体を意識して働く
先ほどまでとちょっと違った観点で「自分の担当箇所だけでなく全体を意識して働く」ケースについて書いていきます。
PG(プログラマー)はSEの作成した設計書にもとづいてプログラムを作るという説明をしましたが、システム開発においてはその一部機能を担当していることになります。
PMやSEは、システム全体が実現すべき機能群を設計し、その機能群を組み上げてシステムになるまでの計画を作っているので、その計画に沿ったプログラム開発を行わなくてはなりません。
そのときPGとして意識するのは以下の2つです。
・自分の担当機能はシステム計画の中でいつ必要なのか
前者は、自分の担当箇所がどのように他の機能とつながっていてどのような機能を実現しているのかを把握することです。
例えば、自分の担当機能はWeb画面機能とデータベース機能とつながっていて、「データベース機能から必要なデータを取り出して業務に必要な変換をしてWeb画面機能に渡す」といった理解をすることです。
実際はもっと複雑かもしれませんが、自分の担当箇所が他チームの担当箇所にどのように影響するかを把握しておくことが重要です。
後者はスケジュールの話で、全体計画にもとづいて組み上げていくために必要な意識になります。
例えば、共通機能部分を開発することになった場合、他チームはその機能を使って自分たちの機能を作るのですから、先に準備が整ってなくてはいけません。
PMやSEが作るマスタースケジュール、詳細スケジュールにはそのような機能間の依存関係が反映された形になっているため、納期を守れないと全体の計画に影響がでることになってしまいます。
このようにシステム全体からみた機能の位置づけと必要になるタイミングを把握するように意識しておくと、これまでと違う機能部分の開発にチャレンジしてスキルアップにつなげていくといった判断材料にもできます。
チームメンバーとの会話でコミュニケーション力を高める
チームメンバーとはあらゆる面で協力していかなければなりません。
SEやPMと交渉となると少々気が引ける場面もあるかとは思いますが、むしろそういったケースに立ち向かうためにもチームメンバーと頻繁にコミュニケーションをとってスキルを高めておきましょう。
なぜなら、どんなに嫌だといっても結局PMやSEからは報告を求められることになるので、自信をつけておかなければならないからです。
自分が発見した問題箇所を説明して対処してもらったり、対処までどのくらいかかるのかをヒアリングしてその間どのように作業するかなど、小さい範囲かもしれませんが、論理的な説明をしなければいけない要素は詰まっているはずです。
そういった説明をチームメンバーどうしで行っていくことによって、対SE・PMへの報告もだんだんと上手にできるようになってくるはずです。
PGになる人の性格として「人と関わるのが苦手で一人でずっとゴリゴリプログラムを書いていたい」という人も少なくないかもしれません。
そのような性格だったとしても、「プログラムを仲介してなら会話が弾むかも?」ということで、「ペアプログラミング」や「モブプログラミング」などを取り入れて、コミュニケーション力を高めるのも良い試みです。
SEとしてスキルアップする方法
続いて、SE入門者向けとしてどのように振る舞うことがSEとしてのスキルアップにつながるか?について書いていきます。
クライアントの要望を100%理解するよう心がける
SEの仕事はクライアントの要望(要件)をシステムに落とし込んでいくことですので、クライアントの言うことを深く理解しなければなりません。
SEが持っている武器としては、これまでの経験から得たシステム構成のベストプラクティスだったり、アプリケーションの構成だったりするわけですが、そのパターンを押し付けるのではなく、クライアントの要望を深く理解した上で最適な提案するという心構えが大切です。
SEとして経験を積んでくるとその心構えが逆転してしまって、技術の押し付けのような提案になってしまうことがありますので、「初心忘るべからず」です。
もう一つ心がける点を挙げると、「クライアントから聞いた要望は100%ではない」と意識することです。
クライアントはその業界で専門の業務をこなしているため、システム開発するSEからすると全く知らないことが常識になっているわけです。
そういう本来ならば「要件」となるべき部分がクライアントから出てこなかったり、「既存と同じで良いです」といった感じではっきりしないケースが多々あります。
そのような「当然のように行われている」業務機能は、実は無くてはならない機能だったりするので、後で発覚するとプロジェクトが大炎上・・・といった事態を招くことになります。
SEとしてはそういった隠れた部分をうまく引き出すコミュニケーションスキルを高めることで、クライアントからの信頼も得られるようになっていくはずです。
常にわかりやすく説明するよう心がける
相手にわかりやすく説明するというのは社会人として常に磨いていくスキルではありますが、SEはエンジニアなので「論理的に根拠を示しながら」理解しやすくするというスキルが重要となります。
説明をわかりやすくするためのコツとしては、
・数値化して表現
・変更の前後をならべて、差異を明確に表現
といった要素を示しつつ、結論を説明すると良いでしょう。
難しいのは「予測」とか「見積もり」を示す場合なのですが、経験が必要とされる側面も大きいです。
ただ、開発の経験が豊富な企業だと、開発スタイルや案件に応じた基準値などが用意されている場合もあります。
いずれにせよ、先輩SEやPMに相談し、どのように予測値を作っていくか、学んでいくことが必要になります。
また、クライアント向けとは逆にプロジェクト内部に向けての説明もわかりやすくすることが必要になります。こちらはどちらかと言うとクライアントから受けた要望をシステムに落とし込む想定で技術的な説明することが求められます。
つまり、プロジェクトにおける開発スタイル、PGが扱うプログラム言語やアプリケーション構成、さらにはサーバーやデータベースなどのインフラ技術などの要素に落とし込んで説明ができなくてはなりません。
そのため、現在プロジェクトで使っている技術要素、さらには世の中的なトレンドなどについて常にキャッチアップしていく心がけが必要です。
どうしてプロジェクトでその技術を使っているのか、その利点や注意点などが正しく説明できると、PGやインフラエンジニアからの信頼を得ることにつながるはずです。
PGと向き合い、その人の長所や短所を理解する
システム開発においては、プログラムは非常に重要な要素です。コンピューターシステムは「ソフトがなければただの箱」と言われるように、プログラムが重要であり、SEはその開発を担うPGの能力が最大限に発揮されるよう、努めなければなりません。
SEはPGの経験や得意なプログラム言語を把握して、システム全体のどの機能を担当してもらったら効率が良くなるかを考え、チーム構成や分担を決めていくことになります。
そうして構成したPGのチームがそれぞれ能力を発揮できるようにするための気配りも必要になります。
プログラムはPGの個性が最も出てくる部分でもありますので、同じ機能をつくるにしてもそれこそPGによってまったく別のプログラムになるのです。
「こだわり」のような部分で、キッチリしたいPGと全く気にしないPGが書き方を巡ってぶつかることもしばしばあります。
キッチリしたいPGの極端なケースでは、他のPGが書いたプログラムを自分好みに勝手に書きかえてしまうことあります。
チームとしての開発が最大限に効率よくなるためには、SEはそういった衝突をただ避けるのではなく、長所・短所としてとらえ、お互いに補えるような施策を実施していくことが重要になります。
例えば、ペアプログラミングを導入したり、スキルのあるPGに勉強会の開催をもちかけたり、ノウハウ集を作って共有する、といった施策があります。
対面で意見を言い合うことが難しければ、チャットツールなどを活用し情報交換がスムーズに行える環境を整える施策も必要かもしれません。
そのような施策から、チームとして個々のPGが助け合いながら成長していけるそんな雰囲気を作り出せると、開発の効率は見違えるように良くなるはずです。
もちろん先ほどの項目と同様に、チーム開発を効率化する手法についてはWebで検索すればたくさん出てきます。自分の関わるPGメンバーの長所・短所をふまえて、どの手法を取り入れたら問題が解決するのか、ということも大事なのですが、さらに効率良く開発することもできるはず。
PGから困りごとの相談を受けたら解決ができる、さらにもっとうまくいく方法もアドバイスできるSEになって、また一緒に仕事がしたいと思ってもらえれば、やりがいにもつながるでしょう。
システムエンジニアの将来性は?
システムエンジニアを目指す方、現在システムエンジニアとして活動されている方に共通して気になるポイントとしては、「システムエンジニアの将来性は?」という部分かと思います。
せっかく専門的な知識を得て、システムエンジニアになっても、将来性が期待出来ないのでは不安になってしまいます。
結論として、システムエンジニアの将来性は期待出来ると考えて問題ありません。
IT業界全般の需要の増加と人手不足により、これまで以上にシステムエンジニアの需要は高まることが期待されています。
一方で、システムエンジニアと一言で表しても、会社員やフリーランス、分野毎の違いなどで、様々なシステムエンジニアが存在します。
それぞれのシステムエンジニアが置かれている現状や将来性について詳しくご紹介していきたいと思います。
システムエンジニアの現状
まず、システムエンジニアの現状ですが、分野を問わず各業界で需要が高まっています。
まだまだ経験者を重要視する傾向は高いですが、業務未経験の方でも中小企業を中心に採用活動を行なっているなど、広い間口が提供されています。
一方で、労働環境に関しては、まだまだ改善の必要があると考えられており、長時間労働や低賃金労働も業界全体を通して浸透してしまっているのが現状です。
昨今は働き方改革を各企業が推進しており、以前よりは少しずつマシになってきているようですが、「IT業界=激務」のイメージは払拭しきれていないようです。
企業での需要はある?
システムエンジニアは、IT関連企業はもちろん、IT関連以外の一般企業にも近年ますます需要が高くなってきております。
これまでは、一般企業は外注という形でIT専門の企業にシステム構築を依頼するスタイルが主流でした。
しかし様々な分野でのIT技術の需要増加により、社内でシステムエンジニアを確保した上で、企業の業務内容に精通したスペシャリストとしてのシステムエンジニアを確保する動きが強くなってきています。
もちろんこれまで通り、IT関連企業でのシステムエンジニアの需要も増加傾向を維持しています。
近年ではフリーランスとして働く方も多くなっており、企業としても社員の確保に一層力を注いでいることから需要が高くなっているようです。
どの分野で求められている?
分野別では特に、業務系のシステムエンジニア、ネットワーク系のシステムエンジニア、Web系のシステムエンジニア、スマホ・タブレット開発のシステムエンジニアに関しては需要が著しく伸びている傾向にあります。
業務系のシステムエンジニア
まず各企業で独自のシステムやアプリケーションを開発することが多くなり、業務系のシステムエンジニアの需要は高まるばかりです。
企業のシステムを構築するということで、規模が大きく必要となるエンジニアの数が多いことや、構築が終わった後の保守・運用なども必要なため、必然的に多くのシステムエンジニアが関わることになります。
ネットワーク系のシステムエンジニア
ネットワーク系のシステムエンジニアでは、近年仮想化技術やクラウド関連技術をはじめ、AWS関連技術などネットワーク周りの技術が必要になることも多く、需要が伸びてきている傾向にあります。
未経験者が参入しにくい分野であることも相まって、経験者の方は特に企業から高待遇を提示されるケースも多くなります。
Web系のシステムエンジニア
Web系のシステムエンジニアに関しても同様に各企業から需要が高まっている分野の1つです。
Webシステムは小さいプロジェクトから大きなプロジェクトまで無数に存在し、案件の数だけでいうと最も多いのがWeb系システムエンジニアの担当範囲となります。
Web系のシステムエンジニアは比較的簡単に作成出来るシステムも多くあり、未経験者でも参入しやすいことや、リモートワークなどの働き方も多様化しており人気の分野となっています。
スマホ・タブレット開発のシステムエンジニア
最後にスマホ・タブレット開発のシステムエンジニアですが、こちらもネットワーク系のシステムエンジニアと同じく、近年需要が著しく伸びてきている分野です。
iPhoneやiPadなどのアップル製品をはじめ、Android端末に関してもハードウェアが高性能になってきたことにより、ソフトウェアで実現できる内容がパソコンで提供されているソフトウェアと比較してもそこまで差異がなくなってきています。
例としては、居酒屋などで利用されているレジシステムが挙げられます。
従来通りに高額なレジシステムを導入しなくても、似た機能をタブレット用のシステムとして開発することで、安価で便利な専用ソフトウェアの入手が可能になってきています。
システムエンジニアはAIを学ぶべき?
システムエンジニアの仕事がAIによってなくなるのでは?との疑問が近年AI分野の発達により頻繁に見かけるようになっています。
正確な答えは遠い未来になるまでわかりませんが、数年や十数年といった単位でシステムエンジニアの仕事がAIによって奪われることは無いと言えます。
理由としては、実際にAI自体を作成しているのがシステムエンジニアである点やAIテクノロジーが進歩してきているとは言ってもまだまだ完成には程遠いのが実情だからです。
では逆にシステムエンジニアはAI技術を学ぶべきなのか?といった疑問の答えに関しては、どちらとも言えないのが実際のところです。
もちろん学べるのであれば、間違いなく将来的に仕事を確保する上でもAI技術を扱えるスキルは有利となります。
しかし、AIの分野は数学や物理といった専門的な分野の知識が他のプログラミング領域と比べても非常に重要になってきます。
大学などで専門的にAIに関連する知識を学んできた方であればお勧めできますが、これからAIに必要な知識を1から学ぶよりは現在活躍されているプログラミング領域の技術をより深く身につけた方が確実に良いと言える方も多くいらっしゃいます。
システムエンジニアとしてAIを学ぶべきかは、ご自身のバックグラウンドやこれから目指したい領域を十分に考慮した上で決めるべきと言えます。
システムエンジニアとして今後学ぶべきことは?
システムエンジニアとして今後学ぶべきことはたくさんありますが、まずご自身の将来なりたいシステムエンジニア像をしっかりと描くことが大事になります。
目標を決める
ご自身の目標によって習得すべきスキルは異なるため、遠回りしないためにも現時点でどういったシステムエンジニアを目指すのかを大まかにでも決めておくべきです。
Web系システムエンジニア・ネットワークエンジニアなど同じエンジニアでも学ぶべきスキルが全く異なることも少なく無いため、ご自身の中でなりたいエンジニア像に対して必要なスキルを調査しておくことは必須となります。
自分のスキルを認識しておく
また同時に、現在の自分のスキルをしっかりと把握しておくことも大事なポイントになります。
目標とするシステムエンジニア像と現時点のご自身のスキルをしっかりと意識することで、おのずと自分が身につけるべきスキルと目標を達成するためにしなければいけないことが見えてきます。
学び方を確認しておく
ご自身のなりたいエンジニア像と現時点のスキルを確認出来たら次はどうやって必要なスキルを学んでいくかについてもしっかりと認識しておきましょう。
Web系エンジニアや業務系エンジニアで使用するプログラミング言語を学ぶ方法はいくつもあり、例としてオンラインのプログラミングスクールなども選択肢の一つとしてあげられます。
逆にネットワークエンジニアとして利用するスキルとしては、専用の機器が必要であったり資格が必要になるケースも考えられるため、それぞれの分野の学習を始める前に学び方をしっかりと把握しておくことが最短でのスキル取得をするための必須条件となっています。
システムエンジニアとして生き残るためにはネットワークエンジニアを目指そう
ここまでシステムエンジニアとしての将来性についてご紹介してきましたが、システムエンジニアをこれから目指そうという方は特に、どの分野の勉強をするべきか悩んでしまうかと思います。
そこで本記事では、最もお勧めの分野として、「ネットワークエンジニアへの道」をご紹介します。
上記でも少しご紹介しましたが、ネットワークエンジニアは現在、仮想環境やクラウドサービスなどの発展、AWSサービスが大きく広まっていることなどから需要が一段と拡大している分野です。
また、通常のWeb系システムエンジニアや業務系システムエンジニアに比べて絶対数が少ない状態ですので、しっかりとスキルを身につけることで様々な企業から求められる人材となることも可能です。
ネットワークエンジニアとは?
ネットワークエンジニアとはコンピューターネットワークの要件定義・設計・構築・保守を行うエンジニアを指します。
広義の意味では、コンピューター間のデータ通信などを含めた基盤構築を行うインフラエンジニアと呼ばれることもあります。
ここでは広義のインフラエンジニアよりもネットワークのみに特化した「ネットワークエンジニア」をご紹介していきたいと思います。
主な仕事内容は?
ネットワークエンジニアの主な仕事は、上記でも記述しましたが要件定義・設計・構築・保守と多岐に渡ります。
それぞれの仕事内容について詳しくご紹介していきます。
要件定義
顧客の要件(要望や問題点)などをヒアリングし、システムとしてどのように解決するかを設計するフェーズです。
コンピューターネットワーク全体のイメージを構成する段階です。
要件定義フェーズで、OSやサーバーなどとの関係性やセキュリティ問題なども全て考慮に入れておく必要があるため、高い知識を要する人材が必要なフェーズとなります。
また要件定義フェーズでは今後のスケジュールについても決定することが多くなるため、マネジメント能力も必要となります。
最終成果物としては「要件定義書」が挙げられます。
設計
設計フェーズでは、要件定義書に基づいてより具体的に設計を進めていく段階に当たります。
プロジェクト毎に異なりますが設計フェーズはさらに「基本設計」「詳細設計」「運用設計」の3つに分けられることが多くなります。
基本設計
基本設計のフェーズでは、要件定義で決定した内容を実現させるために、ネットワーク機器の選定やコンピューターネットワーク構成の具体的な内容などを決定していく段階です。
最終成果物として「基本設計書」が挙げられます。
詳細設計
詳細設計のフェーズでは、基本設計で決定した内容を実現させるために、ルーターやスイッチなどといった様々なネットワーク機器の具体的な設定値を決定していきます。
詳細設計フェーズで決定した値を基に構築の段階では値を入力していくことになりますので、詳細設計の内容が最終的にネットワークの完成系ということになります。
運用設計
運用設計はネットワーク構築後の本番稼働した後にどうやって運用・保守していくかを定義する設計書のことになります。
運用設計書に関しては、設計フェーズで作り上げてしまう場合と構築フェーズで作成するパターンに分かれます。
内容としては、運用方法の記載や各種機器の設定変更・構成変更のスケジュールなどをあらかじめ決めておきます。
構築
構築フェーズでは、各設計書を基に実際に機器の設置を行なっていきます。
設計までの段階では、デスク上で仕様書作成などの業務がメインとなりますが、構築の段階では実際にネットワークを構築する現場に出向いて、配線などを含めた手作業を行うことになります。
機器の設置を行った後、実際に設計書通りにネットワークが動作するかを確認し、適宜修正を行う必要があります。
運用・保守
運用・保守フェーズでは、運用設計書を基本としてコンピューターの増減や機器のアップデートなど、現在の機材構成に合わせて適宜ネットワークを最適な状態に調整します。
また、日々のネットワークの状況を管理する役目も果たし、トラブルを未然に防ぐことはもちろん、トラブルが起きた際の早急な対応に当たる役目を担うこともあります。
ネットワークエンジニアとして有用な資格とは?
ネットワークエンジニアを目指す際、未経験の方が仕事を獲得するのは、Web系システムエンジニアやアプリケーションエンジニアと比べて難しくなります。
理由としては、ポートフォリオの提出が難しく、実戦経験が無い場合、スキルを評価しづらい点にあります。
そこで、未経験の方でもネットワークエンジニアとして仕事を獲得する際ために、有効なネットワーク関連資格をご紹介していきたいと思います。
基本情報技術者試験
基本情報技術者試験は、ネットワークエンジニアと直接関係した資格試験ではありませんが、情報技術の分野全般に渡る基礎的な知識を問われる試験です。
ネットワークエンジニアといっても、ネットワーク以外にサーバーの知識やOSの知識・各種ソフトウェアに関連する知識など幅広い分野の知識が必要となりますので、基本情報技術者試験に合格しておくことで情報処理分野全般に精通した知識を身につけている証明となります。
ネットワークスペシャリスト試験
ネットワークスペシャリスト試験は、その名の通りネットワーク関連の分野における高度な知識を身につけている証明となる試験です。
基本情報や応用情報技術者試験の更に上位となる試験で、難易度はかなり難しく設定されています。
しかし、ネットワークエンジニアとして仕事を獲得する上では最も有効となる資格の1つと言えますのでぜひ挑戦していただきたい資格となります。
シスコ技術者認定
シスコ技術者認定はベンダー試験となり、上記でご紹介した2つの国家試験とは異なります。
しかし、上記2つの国家試験は日本国内でのみ有効に対し、シスコ技術者認定は世界中で評価される試験内容となっています。
シスコ技術者認定は5つのグレードに分けられており、国内でも多くのエンジニアが挑戦している有名な試験として「CCNA」と「CCNP」が存在します。
本記事では「CCNA」と「CCNP」の2つに絞り、それぞれの特徴についてご紹介していきたいと思います。
CCNA
CCNAはシスコ認定技術者試験の「アソシエイト」レベルと呼ばれる下から2つ目のグレードに位置する初級者向けの試験となっています。
シスコはネットワーク関連の製品を提供するメーカーであり、シスコ製品の取り扱いを専門に行うエンジニアはもちろん、ネットワーク関連の基礎的な知識を身につけている証明としても活用できる資格となります。
CCNAの中でも8つの分野の試験が存在し、受験者がそれぞれエキスパートを目指したい分野の内容に特化した形で資格取得出来る仕組みとなっています。
CCNP
CCNPはシスコ認定技術者試験の「プロフェッショナル」レベルと呼ばれる5段階で3番目のグレードに位置する中級者向けの試験となっています。
CCNP試験もCCNA同様、8つの分野の試験が存在します。
またCCNP試験を受験するためには、「受験したい分野のCCNAを既に合格していること」または「エキスパートレベルであるCCIEを既に合格していること」のどちらかを満たしている必要があります。
企業によっては求人への応募条件としてシスコ認定技術者試験の合格を提示していることもありますが、多くの企業がCCNAもしくはCCNPを指定していることから、CCNP試験に合格しておけばほとんどの企業の応募条件はクリア出来ることに繋がります。
今システムエンジニアとして就職すべき企業は?
システムエンジニアとして企業に就職する場合、「一般企業」「ベンチャー企業」「スタートアップ企業」の3つに大きく分類することが出来ます。
それぞれの企業で求められる需要や特徴についてご紹介していきたいと思います。
一般企業での需要
まず一般企業での需要ですが、IT技術があらゆる企業にとって必要不可欠となってきたこともあり、これまで外注に頼っていたIT戦略を内製化するために社内SEを雇う企業が多くなっています。
社内SEは、IT事業部などの部署をもつ大きな企業は別ですが、少人数のチームとして働くことも多く要件定義〜運用・保守まで全ての工程を担当することも多くなるため、1人でも業務を進めていける総合的なスキルが必要とされています。
一般企業で働くシステムエンジニアは、どちらかと言うとサポート的な役割が大きく、給料はそこまで高くありませんが労働環境などを含め、将来的にも安定していることが多い点が特徴です。
ベンチャー企業での需要
ベンチャー企業でのシステムエンジニアの需要は、中長期的な視点で戦力となるシステムエンジニアが求められています。
IT業界未経験のシステムエンジニアでも比較的入社しやすいのがベンチャー企業となります。
IT関連企業の成長が著しい今だからこそ未経験でも入社しやすい環境が整っているとも言えるため、現場でスキルを身につけるつもりで飛び込んでみるのも選択肢の1つです。
ベンチャー企業では得意とする分野が各企業により異なるため、今後成長が期待される分野のスキルを身につけることで長期的にエンジニアとして活躍することが可能となり、また給与面などでも好待遇のポジションを獲得出来る可能性が高まります。
スタートアップ企業での需要
スタートアップ企業はその名の通り、企業として立ち上がったばかりで少人数でスピード感を持って仕事を進めていく企業がほとんどです。
そのため、経験者や1人で設計から開発までを行えるシステムエンジニアが求められています。
最初の頃は資金力などの問題もあり、待遇面があまり良いとは言えないことも多いですが企業として成功した暁には見返りも大きいのがスタートアップ企業の特権です。
近年ではフリーランスとしての働き方も一般的となってきていますが、企業に所属した上でスピード感のある開発を行いたい方には最もオススメできる働き方と言えます。
フリーランスのシステムエンジニアになるという道もある
企業の元でシステムエンジニアとして働くという道もありますが、フリーランスのSEになるという手もあります。
実際、企業で働いてきたシステムエンジニア(SE)がフリーランスとして独立するケースも年々増加しています。
その背景には先ほどの働き方改革の影響もあってか、企業側も必要なスキルを持つ人を効率良く確保できる手段としてマッチングシステムなどを通じてフリーランスを使う、という風潮が高まっていることがあります。
そこで、ここからはフリーランスという働き方をするSEとはどういうものなのか、解説していきます。
フリーランスSEの仕事内容
フリーランスとはいえ、SEはシステムの要件定義や設計などの上流工程を担うなど、仕事内容についてはほとんど変わりはありません。
仕様書どおりに動くものを作るプログラマーと違って、他の開発メンバーやクライアントとずっと離れた場所でSEの仕事をするのは困難を極めます。
そのため、フリーランスSEの案件は「出向型」または「常駐型」が大半を占めます。
会社員と同じようにクライアントのオフィスで仕事をしますが、会社員として働くSEとの違いは契約であり、案件ごとに業務委託契約を結んで業務にあたります。
そういった意味で、フリーランスSEとして案件ごとにクライアントからの依頼を遂行していくには、「即戦力」として上流工程からこなせる能力を求められることになります。
フリーランスSEとして独立するなら、要件定義、基本設計、詳細設計、プログラミング、テスト、運用といった、SEとして一通りの業務経験が必要になります。
フリーランスSEのメリット・デメリット
仕事内容はあまり変わらないとすると、フリーランスSEのメリットやデメリットはどのようなところにあるのか、ここから解説していきます。
まずはメリットからいきましょう。
- 自分の裁量で仕事ができるフリーランスSEの一番のメリットとも言える、納期さえ守ることができれば自由な時間、自由なスタイルで仕事ができることです。会社との雇用関係に縛られるようなことがないので、残業を強要されたり、会議などで時間を拘束されてしまうといったこともありません。
- 自分で仕事を選べる自分の得意分野の仕事や、自分のやりたい仕事を「選ぶ」ことができるのもフリーランスSEならではです。会社勤めであれば、時には自分のスキルの範囲外の仕事をしなければならなかったり、苦手な人間関係の中で仕事をせざるをえないといった状況もありますが、フリーランスSEであれば合わない仕事は避けることも可能になります。
- 業務に関わる費用を「経費」にして節税できるフリーランスSEは個人事業主になります。個人事業主は青色申告の届け出により、最大65万円の控除が受けられます。さらに、業務に関して購入した書籍やセミナーの受講費などを「経費」として計上することができます。
- 副業に制限がない
フリーランスSEは業務委託契約を結んで業務を行いますが、社員ではないので委託側は業務に関する指揮権限を持ちません。したがって、時間に余裕がある場合は別の案件をこなすなど、副業をしても問題になりません。プログラミングの仕事を受けたり、Webページを制作したりといったピンポイントの作業で収入を増やすことも可能です。
ではデメリットにはどのようなものがあるのでしょうか。
- 収入が安定しない
仕事選びが自由になる反面、案件ごとにクライアントと業務委託契約を結ぶので、契約が切れた時点で次が決まっていなければ収入が途絶える懸念があります。そのような状況にならないためにも、よい評価を得ていき、クライアントから継続的に依頼を受け、契約を結べるような信用関係を構築する必要があります。 - 福利厚生、手当、ボーナスがない会社員ですと、会社が提供する福利厚生や、通勤費などの手当、ボーナスという仕組みで収入以上のメリットが得られるのですが、フリーランスSEの場合は全くありません。ですから、収入を考える際には単純な単価を見て判断せず、通勤費などを差し引いた実質の報酬となる額がどれだけになるのかをみる必要があります。
- 確定申告や納税など、事務作業もすべて自分で行う必要があるフリーランスSEは個人事業主となると先にも説明しましたが、税金計算などの事務処理をすべて自分で行わなければなりません。会社員であれば会社が代行してすべて行ってくれていましたが、フリーランスSEとなった場合は自分が稼いだ所得に対して正しく納税する義務があるので、自分でなんとかしなければなりません。
フリーランスSEになるのに必要なスキルは?
一言でフリーランスSEになるといっても、案件のほうから飛び込んで来てくれるわけではありません。会社員時代にはあまり意識してこなかったであろうスキルも必要になります。
ここではフリーランスSEに必要なスキルを3つ、解説していきます。
- ITスキル
フリーランスSEのウリにもなる、ITスキルや実務経験は非常に重要です。会社員としての経験があればそれをアピールすることで、クライアントの目に留まる可能性が高まります。未経験の人であれば、客観的に判断できるIT資格の取得、ポートフォリオの作成などで、自分の持つITスキルを示せると良いです
。 - セルフマネジメント在宅型中心の案件だと特に、自分のコントロールが緩めになってしまい、つい趣味などに時間をつかってしまうこともあります。終わらせて余裕があるならまだしも、つい先延ばししてしまうような人は改める必要があります。
納期を守ることはもちろん、まずはそれに向かってマイルストーンを設け、きちんとした計画を立てることができる必要があります。風邪を引いてしまっても代わりは誰もいないので、そういったリスクも込みで計画/実行できるマネジメントスキルが必要です。 - 営業力、コミュニケーション力会社員であれば他の部門が仕事を取ってきてくれたり、上司から得意分野にマッチした作業を依頼されたり、と毎日アピールせずとも問題なく過ごせてきたはずです。ですが、フリーランスSEになるには、自分自身がどういう人材なのかをアピールし、クライアントと交渉をして契約まで結び付けなければなりません。自分自身という商材を売り込む「営業力」、そしてそれをわかりやすく伝える「コミュニケーション力」は重要なスキルになります。
フリーランスSEに向いている人って?
フリーランスSEは、ある意味仕事に関するあらゆることを自分で行う必要があります。ですから何を差し置いても「自分自身をマネジメントする」ことができないと務まりません。
ここではフリーランスSEに向いている人はどのような人なのかについて解説していきます。
- オンオフ含めて時間を律することができるフリーランスSEになって自分の好きな時間に仕事ができる!と、オフの時間を楽しんだ挙げ句、納期直前に追い込まれるといったことでは次の案件ももらえなくなるでしょう。仕事をするときのオンの時間と、自由な時間を楽しむオフの時間を、バランス良く自分で配分し、体調不良などのリスクも考慮して納期までの計画ができるような人ならフリーランスSEに向いていると言えます。
- 好奇心を保ち、継続的にスキルアップできるIT業界は巷で言われているように本当に進歩やトレンドの変化が早いです。次々と新しいソフトウェア/ハードウェアが出てくる中、この先どのような技術が求められるのか、自ら好奇心をもってスキルアップに取り組んでいけるような人は向いています。ただ、興味があるからといって単純に自分のスキルを差し替えていくのは良くないので、プログラミング言語であればどれか一つ深い知識と経験をもった軸を持つことを忘れないでください。
- 変化を恐れないいくら継続的に仕事を回してもらえるからといって、そこに留まって自分の得意なことばかりこなしているようでは、いざ急に状況が変わった時に仕事がパッタリなくなってしまう状況に陥るかもしれません。得意な案件があるときでもそれはセーフティとして残しておき、新しいタイプの案件や違う言語の案件に自らを対応させるといったモチベーションを持てる人はフリーランスSEに向いています。
- 人と違う部分を強みにできるフリーランスSEが旬だから・・とか、流行っているからWeb系言語でフリーランスだ、とか、世の中の流れにフラフラっと流されてしまうような人はフリーランスSEとしてはうまくいきません。その先にはたくさんの競争相手がいるだけなので、なにか人と違う部分がないと案件を受注することが難しくなります。
- あえて人と違う言語を習得してみたり、敬遠されがちな内容の案件をこなせるようになるなど、人と違う部分に磨きをかけられる人はフリーランスSEに向いています。
フリーランスSEの年収
ここまででフリーランスSEになるための必要な要素について説明してきました。
最後に収入面について、フリーランスSEがどれくらいの年収を得ているのかを見てみます。
フリーランスエージェントのサイトなどで募集されている案件を見てみると、月40万~80万くらいの案件がほとんどを占めています。単純に年収に換算すると480万~960万円という範囲になります。
持ち合わせているスキルや営業力にもよるところはありますが、単価の高い案件を中心に活動できるようになれば、1000万円をこえる年収を得ている方も珍しくはないという状況です。
DODAが求人情報をもとに公開している技術系職種の平均年収では、企業勤めのSEの平均年収が367万~598万円となっていますので、フリーランスSEになることで収入アップできることが見込めます。
ですが、デメリットのところでも説明したとおり、会社勤めの場合はいろいろな制度で守られる部分もありますので、単純な差額だけで判断してしまわないよう、注意しましょう。
フリーランスSEの仕事の探し方
フリーランスSEになったとして、急に自分で仕事を探せ、しかも案件単位でとなれば、これまで会社でなんとなく割り当てられた仕事をこなしていた状況と180°変わります。
そのような方のために、フリーランスSEがどのように仕事を獲得してくるのか、解説していきます。
知り合いから案件を受注する
周囲にフリーランスSEの知り合いがいる場合、そこから案件を紹介してもらう方法があります。マージンを取られるといったことがなく、クライアントや案件の実情なども聞きやすいため、安心して受注することができます。
ですが、人脈に依存する部分もありますので、最初からアテにできる人はそうそういないはずです。ある程度フリーランスSEとして実績を積みながら、知り合いを増やしていくことで、結果的に案件の受注を安定させることができると考えておくくらいが良いです。
クラウドソーシングサービスで案件を受注するr
フリーランスSEとして受注する案件はほとんどが「出向型」「常駐型」になると説明させていただきました。
しかし、ランサーズやクラウドワークスなどに代表されるクラウドソーシングサービスでは、「在宅型」の案件も見つけることができます。
クライアントとフリーランスSEが顔を合わせることもなく、金銭の受け渡しもサービス経由でおこなわれるため、信頼関係が薄い状態での受注になります。
そのため、単価については安くなってしまうことは避けられませんが、大手サービスであればかなりの案件数が登録されるため、在宅やリモートでできる仕事を探したい方はクラウドソーシングサービスを活用しましょう。
エージェントを利用して案件を受注する
フリーランスSEに一番オススメなのがこのエージェントを利用する方法です。
マージンは発生しますが、これまでの方法ではなかなか取れない大手企業の案件や単価の高い案件を紹介してくれること、エージェントが仲介してくれることで、より自分に合った案件を紹介してくれるなど、さまざまな利点があります。
また、現在受注している案件が終了するのに合わせて次の案件へと繋いでくれるので、収入面を安定させることもできます。
さらに、エージェントによっては福利厚生のサービスを提供しているところもありますので、フリーランスSEでありながら会社員のような待遇を受けられるという働き方も可能になってきています。
どうやって仕事を受注する?おすすめはエージェント
ですが、よほどの有名人でもない限り、クライアントに対して個人で応募しても、なかなか受注までたどり着くのは難しい現実もあります。
そこで頼るべきはフリーランス案件を専門に扱っているフリーランスエージェントです。
複数登録する事で案件自体も増えますし、比較する事も可能。
ですので案件紹介サービスは、情報収集するという意味でも、1つ登録するだけでなく複数登録する事をおすすめします!
Midworks![midworks]()
Midworksは株式会社Branding Engineerが提供するフリーランス向けマッチングサービスです。
特徴は登録しているフリーランスに対して、正社員なみの保険や福利厚生サービスを提供していることです。また、契約中は完了した案件と次の案件の間にブランクが空かないようにMidworksが案件を調整してくれるので、収入を安定させることができます。
Midworksは元単価と手数料を公開しているため、変に高いマージンをとられているのではないか?といった疑わしい部分がなく、透明性の高いサービスを提供しています。
ポテパンフリーランス
フォスターフリーランス
未経験の方は、まずスクールから
ここまでは会社員としてSEをやってきた方を想定して説明してきました。
そのような方であれば、数年にわたるシステム開発の経験やいくつかのプロジェクトを渡り歩いてきた実績もあります。そして、それらをそのままフリーランスSEの武器とすることができます。
ですが、そういった実績がない未経験の方は、クラウドソーシングを使うにしろエージェントを使うにしろ、苦戦してしまうことが予想されます。
そこでオススメなのがスクールです。費用はかかってしまいますが、現役エンジニアがメンター(講師)となってくれる、スクールによっては就職斡旋などもしてくれる、などフリーランス稼業を早く立ち上げることができます。
一人で実績を作る時間を掛ける方法もありますが、早く案件をこなして収入を得られる状況にしてしまうほうがトータルで考えるとコストがかからない可能性が高いです。いくつか著名なスクールを以下にご紹介しますので、自分の進みたい道にあわせて選んでみてください。
断言しますが、システムエンジニアの将来性はあります
結論として、システムエンジニアの将来性は、需要の高まりから今後ますます期待が持てます。
また数あるエンジニアの分野の中でも、本記事ではネットワークエンジニアでの活躍をオススメしています。
本文中でも記載した通り、ネットワークエンジニアの仕事は仮想化技術やクラウド関連技術の発展により今後ますます需要が伸びることが予想されます。
特にAWS関連の仕事は軒並み増えている一方で、日本国内ではまだまだAWS技術者の数は足りていません。
AWSは技術として登場したばかりのため、新しく参入するエンジニアの方にもチャンスの大きい分野であると言えます。
ぜひシステムエンジニアになることを検討している方には、本記事でご紹介した内容を参考として、ご自身が最も興味を持った分野のエンジニアとして活躍できるよう挑戦してみてください。
まとめ
システムエンジニアになるために何が必要なのかというところからシステムエンジニアの将来性・PGとSEの違いまで解説しましたがいかがでしたか?
システムエンジニアになるために一番必要なスキルは当然ですが、プログラミングスキルです。
プログラミングをこれから学ぶという方はまずは独学がいいのかスクールがいいのか検討してみてください!
スクールに行くことが決まったらどのスクールに行くか比較検討してみてください!
WRITER

コードランとは、プログラミング初心者や副業/フリーランス向けに、プログラミングスクールの評判や口コミを比較できるサイトです。 スクール比較のほかに、現役エンジニアたちが現場で活躍できるようになるまでのストーリーや 「未経験でもプログラマーになれるの?」「 スキルアップするには何からはじめればいいの?」「 フリーランスはみんなどうやって稼いでるの?」 「実際のお給料は?」 など、プログラミングを志すみなさん向けの記事を集めています。