SEとはどんな職業?
まずはSEの基本的な事柄を押さえておきましょう。SEの具体的な仕事や、SIerやプログラマーとの違いなどを解説していきます。
SEとは
SEとは『System Engineer』(システムエンジニア)の略称です。WEBシステム・業務システムなどの『システム関連のことをする』仕事をしている人のことをSEと呼びます。
このSEという仕事はクライアントの意見をもとにシステムの設計や要件定義を行うことから、一般的には開発業務の『上流』を担当します。そのため、SEの業務はプロジェクト単位でクライアントに常駐して行うこともあります。
その一方で、社内SEと呼ばれる人たちもいます。社内SEは、その名の通り会社の情報システム部などシステム開発をする部署に所属し、社内のシステム開発に従事する人達です。
社内の案件を担当することから、社内SEには経営的な視点からシステム開発を行うことが求められるでしょう。また、社内のインフラの整備やIT分野のサポートも担当する場合もあります。
Slerとの違い
SEと似たような言葉で『SIer』をご存知でしょうか。SEの定義を理解していなければ、SIerと混同しているかもしれません。では、SEとSIerは何が違うのでしょうか。
簡単に言うと、SEは『人』でSIerは『会社』です。SIerはSystem Integratorの略称で『エスアイアー』と読みます。つまり、システム開発を行っている会社、ということです。
プログラマーとの違い
また、SEとプログラマーを混同しているケースもよく見受けられます。その違いは『コード(コンピューターへの命令を記述した文字列)を書くか否か』です。コードを書くのがプログラマーで、システム設計を行うのがSEとなります。
このコードはコンピューターを動かすために必要な情報ですので、プログラマーはどのような文字列によってコンピューターがどのような動きをするのかを理解しなければなりません。
SEは、まずプログラマーがコードを書くための準備をします。クライアントからの要望を吸い上げ、プログラマーに伝えます。
プログラマーはその要望通りに動くコードを書きあげ、SEがそのプログラムの運用・保守を担当します。会社によってはSEはコードを書く場合もあります。SEは完成の前後もテスト作業をするなど、アフターフォローも大切となってくるでしょう。
会社の中には、SEが開発のすべての工程に関わり、プログラマーはコードを書くことだけを担当するところもああります。
SEの仕事について知ろう
ここからは、SEの具体的な業務内容を見ていきましょう。
SEが関わるシステム開発は、『ヒアリング』『要件定義』『システムの基本設計』『詳細設計』『テスト』というフローに分けられますが、基本的に、プログラミング以外はSEが関わります。
そのため、SEはクライアントと上手にコミュニケーションをとることが非常に重要になります。黙々とパソコンに向かっているというイメージがあるかもしれませんが、営業的な役割を果たすのもSEの役割です。
ヒアリング
システム開発を行うためには、まずクライアントの要望をヒアリングすることからスタートします。
クライアントが求めることを理解した上で、実現できることとできないことを取捨選択し、できる限りクライアントの希望に沿ったシステムになるようプロジェクトを進めていきます。
開発側とクライアント側の認識が少しでもずれてしまうと、後々大きなトラブルに発展してしまうことがあります。そうならないように、慎重にコミュニケーションを取らなければいけません。
要件定義
ヒアリングした内容から、具体的にどのような情報を収集するのか、どのような画面が必要なのか、どのような情報を蓄積しデータベース化するのかなどを決めていきます。
このことを要件定義と呼びますが、この定義がしっかりしていなければさまざまなデザインや項目の設定ができないので、非常に重要な工程と言えるでしょう。
システムの基本設計
要件定義が決まった後は、システムの基本設計を行います。具体的に情報を打ち込む画面や、蓄積された情報の見え方、プリントアウトした時のデザインなどのサンプルを作成し、クライアントの求めるシステムに近づけていきます。
詳細設計
基本設計が決まった後は、より詳細なシステム内部の処理方法を決めます。この詳細設計で決まったことが『設計書』と呼ばれる書類に盛り込まれ、プログラマーは設計書に従ってコードを書いていきます。
この設計書にミスがあると、プログラマーはミスのあるコードを書いてしまうことになり、修正には大幅なスケジュール調整が必要となってしまうので注意しなければなりません。そのため、正確な設計書を完成させることがSEの重要な業務になります。
テスト
設計書をベースにして、プログラマーはコードを書いていきます。そして、完成したプログラムをいくつかに分けてテストを行い、正常に作動するかどうかの確認を行います。
この工程で問題がある場合は、プログラマーに修正を依頼することになるのです。このテストを繰り返し、それぞれのプログラムを完成させます。
それぞれのテストをクリアしたプログラムは、最終的に実際に運用する形で総合的なテストを行い、正常に作動していれば納品です。
SEに要求されるスキル
このような業務を担当するSEには、どのようなスキルが求められるのでしょうか。
コミュニケーション
SEに求められるの能力として大切なのがコミュニケーション能力です。開発は一人で進めるものではなく、クライアントの意向を分かりやすくプログラマーチームに伝えて初めて成功するものと言えるでしょう。
ヒアリング・要件定義のフローでは、クライアントとの良好なコミュニケーションが必要不可欠です。システム開発における初動となる要件定義におけるミスは、その後の設計やテストにも影響が出ますので、コミュニケーションは大切となります。
要件定義でミスをしてしまうと、スケジュール調整ができなくなり、納期に間に合わなくなるリスクが高くなってしまうので注意しましょう。
クライアント相手にも、チーム相手にも、理論的にわかりやすく説明するためには、コミュニケーション能力はSEにとって必須条件とも言えます。
マネジメント
システム開発のプロジェクトは、事前に納期が決まっているものもあります。そのため、スタッフィングやスケジュール管理などマネジメント能力も必要です。プロジェクト管理を行うPM(プロジェクトマネージャー)とも円滑なコミュニケーションを行います。
このマネジメントにも、コミュニケーション力も必要です。スタッフのモチベーションアップや、スケジュールが遅れた時の調整などは、人対人の交渉となるため、どのような態度でどのような会話をするかが肝になります。
高いコミュニケーション力でマネジメントするという、高度なスキルがSEには求められるのです。
技術的スキル
IT技術は日進月歩の世界なので、プログラミング言語やデータベースはもちろんネットワークやセキュリティに至るまで、SEが把握しておく必要があり、範囲は非常に広くなっています。
もちろん、すべてを完璧に把握することは不可能なので、常にアンテナを張って新しい情報を吸収しなければなりません。
また、人事管理ソフトや会計ソフトの開発に携わる場合は、社会保険や簿記についての知識なども必要になることもあります。技術的スキル以外にも、SEが学ぶべき事柄多いのが現状です。
SEが向いている人
複雑な業務をこなすだけでなく、知識の幅も求められるSEですが、どのような人が向いているのでしょうか。
俯瞰できる
まずは、物事を俯瞰して全体を把握できる人です。SEは部分的な内容だけでなく、全体を俯瞰して把握する必要があるからです。
また、SEはスケジュール管理能力も必要ですので、俯瞰してスケジュールの進み具合を把握し、遅れをリカバリーする方策などを進めなければなりません。
リーダーシップ
システム開発全体を任されるSEですから、リーダーシップのある人が向いています。クライアントやプログラマーチームだけでなく、社内の他部署の人など多くの人たちを巻き込んで開発を進めますので、旗振り役が求められます。
関わる多くの人を納得させながら開発を進めること、そしてプロジェクトを成功させチーム皆が幸せになる結果を残すことがSEの醍醐味といえるでしょう。
好奇心がある
社内SEではない場合、多くのSEはさまざまなシステム開発に携わり、複数の会社に常駐することになります。開発環境は派遣される会社ごとに大きく変わりますので、その場その場で多くの知識を身につけようとする好奇心がある人が向いています。
常に向上心を持ち、学ぶ意欲があり、システム開発の実務につなげることができる人は、SEとしてどんどん成長していきます。そしてまた、新たなシステム開発に携わり、新たな知識を身につけさらに成長する機会を得ることができます。
SEになるためには
それでは、SEになるためにはどのようにすれば良いのでしょうか。
大きく分けて、SEになるためには『独学で勉強する』か『学校・スクールに通う』かの2つの方法があります。SEはプログラマーに指示を出す立場ですから、まずはプログラミング能力を身につける必要があります。
独学で勉強する方法
独学でプログラミングを勉強するメリットは、自分のペースで進めることができることです。また、プログラミングに関する参考書はたくさん出ていますので、実際に手に取って自分に合ったスタイルで学ぶことができるというのも大きいでしょう。
しかし、参考書に書かれている演習問題を解くだけでは、実際の現場で起こりうる問題・課題を体感することは難しいかもしれません。そのため、SEになることを目的としているのであれば、限界を感じるリスクがあることがデメリットになります。
学校、スクールに通って勉強する方法
学校やスクールに通って勉強する一番のメリットは、SEとして仕事をするために必要な技術を持った専門の講師から学べるということでしょう。不明点や不安点をすぐに解決できますし、次のステップへのヒントを手に入れることができるかもしれません。
SEにとって求められるのは、実際の現場で通用する技術です。そのため、より実践的な手法を学べるスクーリングは、SEになるための近道と言えるのではないでしょうか。
ただデメリットして挙げられるのは、授業料がかかってしまうことです。しかしながら、独学では学べない知識を吸収できて、最短距離でSEになれる可能性があることを考えると、多少の出費はそれだけの価値があるとも言えます。
SEのキャリア
SEになったあとは、どのようなキャリアパスを進むことになるのでしょうか。
一般的には、SEからプロジェクトリーダーやプロジェクトマネージャーに昇格し、課長・部長といった管理職へのキャリアパスが開かれています。
プロジェクトリーダー
プロジェクトリーダー(PL)とプロジェクトマネージャー(PM)は、似て非なるものです。しかし、開発現場においてはPLの上の存在がPMといったあいまいな区別しかないケースも多く見られます。
具体的には、プロジェクトリーダーはプロジェクトを引っ張る存在としての役割が期待されます。メンバーのモチベーションの維持からクライアントとの円滑な折衝を行うなど、プロジェクトを無事に成功させるために動き回ります。
一方、プロジェクトマネージャーはプロジェクトの管理業務がメインです。メンバーの選定、スケジュールの管理、予算の管理などプロジェクト全体のマネジメントを行います。
プロジェクトリーダーがシステム開発の過程を管理し、プロジェクトマネージャーがその結果を管理するという違いがあります。
課長、部長
プロジェクトマネージャーは、あくまでひとつのプロジェクトを管理する立場ですが、課長や部長は複数のプロジェクトを横断的に管理する立場です。そのため、マネジメントの範囲は広くなります。
それぞれのプロジェクトマネージャーから課題や問題点を吸い上げ、その解決のための対策を実施したり、プロジェクトの終了後に次の受注につなげるための提案を行うなど会社の利益のことも視野に入れた役割も求められます。
SEの平均年収はどのくらい?
では、SEの平均年収はどれくらいなのでしょうか。また、プログラマーの年収とはどれくらいの違いがあるのでしょうか。
SEの平均年収
まずは、SEの平均年収です。厚生労働省が2016(平成28)年に発表した『賃金構造基本統計調査』によると、日本全国のSEの平均年収は550.8万円とされています。
この調査書に記載されている全職種の平均年収が454.3万円であることを考慮すると、SEの年収は高額と言えます。
過去5年間の統計では、常に平均年収が500万円を上回っているので、収入的に安定している職種と言えるでしょう。
また、年齢やキャリアと共に年収がアップする傾向にあります。そのピークは男女共に50代ですが、会社によって年収の差があるのも事実です。
プログラマーの平均年収
では、プログラマーの平均年収はどれくらいなのでしょうか。同じく賃金構造基本統計調査によると、プログラマーの日本全体の平均年収は414.6万円となっています。これはSEよりも130万円近く低い金額です。
また、性別によって大きく平均年収が変わります。プログラマーの男性の平均年収が425万円であるのに対し、女性は372万円と大きく異なります。
そして、開発するシステムによって使用するプログラミング言語が変わることから、幅広い言語に対応できるプログラマーの方が年収が高くなる傾向にあるので、個人差が大きくなるという特徴もあります。
まとめ
システム開発というもの建築に例えるならば、SEの役割は建築士ということになります。
クライアントからヒアリングを行い、希望に沿った家の設計図を作るのが建築士の仕事です。SEがクライアントの希望に沿ったシステムの設計図を作るのと同じです。
ただクライアントの希望を聞いているだけではなく、専門家としてより良いものを作るための提案を行います。そして、どのような職人(プログラマー)にどのような指示を出すのかが、プロジェクトの成功に直結します。
そのためプログラマーからスタートしたSEも多く存在します。そして、日々勉強を続けてより大きな案件を任せられるSEへと成長していくのです。