仕事内容から分かる!SEに必要な“共通スキル”と“分野別スキル”
SE(システムエンジニア)は、IT業界のなかでも高額年収が期待できる職種です。
そのため、憧れている方も多いはずです。
しかし、SEと一口に言っても、どの分野で活躍したいのかにより身につけておきたいスキルが異なるのです。
いっぽうで、どのSEにも共通して必要なスキルもあります。
今回はその背景となるSEの仕事内容について確認したうえ、SEに必要な“分野別スキル”と“共通スキル”について説明していきたいと思います。
SEの仕事とは?
そもそもSEの仕事は、IT環境やシステムを作り出すというプロジェクトのなかでも上流工程にかかわるものです。
どの分野のSEでも、基本的な流れは変わりませんが、企業やそのときのプロジェクトにより、多少その仕事範囲は変わってきます。
○すべてはクライアントとの打ち合せから
どのようなプロジェクトも、クライアントである企業との打ち合せから始まります。
クライントの企業ではどのような仕組みやシステムが必要なのかを把握するためです。
そして課題などを分析しつつ要件定義を行い、クライアントに改めて提案した後、プロジェクトを実際に進めていく手配を行います。
まず、おおまかな設計書を作成します。その後、プログラマーなどの開発エンジニアの作業を指示した詳細設計書を作成していきます。
場合によっては、プロジェクトマネージャー(PM)がスケジュールの策定や予算、人員の管理などを行う際サポートを行います。また、人員の手配についてもSEが指揮や実行を行うケースもあります。
○開発後も指揮を行う
開発エンジニアがおのおのの担当部分を終えたあと、設計通りの動きをするかテストを担当するケースが多いです。
そのプロジェクトにより、テストの設計自体はテストエンジニアに任せたり、外部委託することもありますが、全体の指揮はSEに一任されることが多いです。
ここで問題があった場合は、再び開発エンジニアに戻し修正を依頼するか、開発エンジニアがすでに別のプロジェクトに参加してしまっていれば、デバッカーに任せたり、大きなものでなければSE自体が修正をするなんてこともあります。
いずれにせよ、SEは、初期段階から納品までの全体を指揮・管理する役割と考えると良いでしょう。
SEに必要な共通スキル
次は、どのSEにも共通して必要だと言われるスキルから説明していきたいと思います。
先の項でSEのおおまかな仕事内容や流れについて理解いただきましたが、今度はその仕事内容を詳しく見ていきながら必要なスキルを紐解いていきまたいと思います。
1:ヒアリング力
プロジェクトの最初の工程から必要になるのがヒアリング力です。
すべてのプロジェクトはクライントのためのものですから、クライアントの要望をしっかり聞き取ることは最低限必要なスキルと言えるでしょう。
ある程度経験を積むと、とくに同じ業種にたいしてのプロジェクトの場合、経験から十分にヒアリングを行わなくても推察できる場合もありますが、企業独自の文化や方針は必ずありますので、丁寧に聞き取りを行うことが必要です。
2:分析力・論理的思考
集めた情報を分析し、どのようなシステムや準備が必要なのか分析する力も必要です。
そして次は、その分析結果をもとに、実際にどのようなシステム、仕組みにするのか答えを導くための論理的思考も必要です。
3:文章力(表現力)・プレゼンテーション能力
要件定義のあとは、基本設計と詳細設計という作業に移ります。
基本設計とは、クライアント、開発エンジニア両方にむけ、完成したシステムのイメージが分かるような資料をつくることです。
ここでポイントになるのは、クライアントに商品(システム)を確認してもらう大事な機会でもあるということです。
たとえば業務システムの開発の場合、実際にどのような業務フローになるのか、どのような機能を設けるのか、画面はどのようになるのか、印刷するとどのようなレイアウトになるのかといったものなど概要を示したものですが、完成した後、要望していたものと違うなどとならないためにも、クライアントに見せて一緒に確認をしていくことが望ましく、当然、ユーザーが見ても分かりやすいように作成することが必要なのです。
自分やエンジニアだけが分かるような難解な資料を作っていては優れたSEとは言えません。
一方で詳細設計は、社内外の開発エンジニアむけの資料となります。
機能ごとにどのような処理を行わせるのか、流れはどのようになるのか(フローチャート)、画面に掲載する項目やその説明書き、帳簿に掲載する項目やその説明書きなど、開発するうえで必要不可欠な情報を記載していきます。
この時点で記入に不足やわかりにくい情報、欠陥があると、開発エンジニアがわざわざ確認作業を行わなければならなくなったり、気がつかずそのまま開発に組み込まずに進めてしまったり、手戻りが頻発してしまうなどといった恐れが出てきます。
場合によっては、クライントから要望したものと違うなどというクレームがきて、修正する無駄が発生し、実質的に損害を生んでしまうこととなるのです。
そのため、それぞれの目的に合せ、過不足ない、かつ分かりやすい資料を作成する文章力が必要と言えるのです。表現力や国語力といった言葉に置き換えても良いでしょう。
また同時に、設計書はクライアント側やエンジニア側にただ渡すだけでなく、打ち合せにて直接説明を行うのが一般的です。そのためプレゼンテーション能力も必要なスキルと言えるでしょう。
説明の相手が、IT系企業だったり、システム部門の方であればスムーズですが、ITの知識がそれほどない一般の方の場合は、より分かりやすい説明を心がける必要があります。
4:管理力・状況判断力
大規模なプロジェクトや多くの社員を保有する大企業であれば、プロジェクトにプロジェクトマネージャー(PM)やプロジェクトマネジメントオフィス(PMO)といった役職や部門を置いていることがほとんどです。
しかし、それほど大きくない案件の場合は専任者を置かずSEが兼任したり、PMがいてもSEがPMのサポート的な役割として実質的な管理を行っている場合があります。
その場合、プロジェクトが予定通り進んでいるのかの進捗管理や品質管理をSEが行います。
もちろん、日々寄せられる開発エンジニアからの質問に答えたり、トラブル報告に対応する必要もあるので、状況判断力、そして指導力も求められると言えるでしょう。
5:コミュニケーション能力
ここまでの業務において意外に多く見られたのは、人とのかかわりです。
SEの仕事は、机に向かって行うことばかりだと思われている方も多いでしょう。
しかし、クライアントとエンジニアの間にたち、要望を設計して指示する仕事であるため、コミュニケーション能力はもっとも基礎的なスキルとして必要不可欠なのです。
SEに必要な分野別スキル
次は、どういった業界のSEを行うかにより異なってくる分野別の必要なスキルについて説明していきます。
共通スキルがいわゆる人間的な面においてのスキル(ヒューマンスキル)が多かったのに対し、こちらはITにかんする知識やスキルとなります。
1:汎用機系SE
汎用機とは現在一般的になっているパソコンの前から使用されている大型のコンピューターシステムのことで、保険会社や銀行、クレジット会社などの金融機関などが使用しています。
これらのレガシーシステムのバグを修正したり、現状に合せて拡張したり、システムの移行などに携わる場合、汎用機系のシステムに対する知識が必要です。具体的にはCOBOL(コボル)という1959年に開発されたプログラミング言語に対する理解は必要だと言えるでしょう。
ただし、国家試験である基本情報技術者試験においてCOBOLの出題が廃止されたといった背景もあり、COBOLを新規習得するエンジニアも少なくなっています。
とはいえ、厚生労働省の勤労統計にも使われているうえ、プログラミング言語は適材適所で使い分けることが一番大切ということもありCOBOLがなくなるということはないと言う意見も多数です。
そういった意味では特に汎用系システムにおけるSEを目指す方は、COBOLの習得をしておくと良いと言えるでしょう。
2:組み込み系のSE
組み込み系SEとは電子機器を制御するシステムを開発するSEです。
一般的に、家電製品やエレベーターなどの業務用機器など、独立した機械を扱います。
基本的には「C」や「C++」といったプログラミング言語が使用されることが多く、それらのプログラミング言語にかんする知識が必要と言えます。
また最近では、IoTが注目を集めていることから、組み込み系SEの仕事も大きく変わりつつあります。
IoTとはInternet of Things(モノのインターネット)と略され、機器を使用して得たデータを使ってより生活を便利にしたり、インターネットを使って機器を制御するといった仕組みです。
たとえば、腕につけた時計で歩いた距離や心拍数、血圧などを測定しデータを集めそれをパソコンで見られるスマートウォッチがあります。
しかも、機器が集めたデータを分析しその人に合ったトレーニングプランの作成やおすすめ料理の紹介、さらには野菜のお届けなどさまざまなサービスに結びつけることができるので、今後は組み込み系のシステム開発も大きく発展することが考えられます。
これまでは機器単体を動かせればよかったものの、インターネットの知識やクラウドの知識、場合によってはAI系の知識も必要と言えるでしょう。
プログラミング言語としては、JAVA、PythonやR言語といったものが使われています。組み込み系のSEを目指すのであれば、総合的にスキルを高めていくと良いでしょう。
3:Web系・モバイル系SE
昨今発展が著しい分野といえば、Web系システムやスマートフォンなどのモバイル系システムと言えるのではないでしょうか。
Web系やモバイル系の開発というと、基本的にはBtoCのものが多いです。
電車の時刻を調べるだけでなく、最短ルートを導き出したり、買い物、決済ができるECサイト、動画サイトまで、Web上でさまざまなことが可能になりました。
最近では、Web上でWebサイト作成やアプリ開発までできる高度なWebサービスの開発も盛んです。
Webサイトもモバイル系のアプリも年々高度化していますのでSEは幅広い知識とともに、深い知識が求められていると言えます。
htmlやCSS、JavaScriptといったフロントエンド側の言語はもちろん、Java、R言語、SwiftやObjective-C、Kotlinなどバックエンド側のプログラミング言語の習得も必要です。
さらに、システムを組むためにはサーバーの知識、ネットワークの知識も必要となります・
また、最近ではパソコン、スマートフォン以外であるタブレットの存在感も増してきました。
Web系・モバイル系は非常に幅が広いこと、しかも技術開発スピードが早いことから、積極性、新しいことへの興味、チャレンジ精神といった要素も必要と言えるでしょう。
4:業務システム系
業務システム系のSEもWeb系SEと共通する部分が大きいです。
BtoBむけのシステム開発に特化しているというだけで、同じようなプログラミング言語の習得が必要です。
また、ネットワークやサーバー、データーベースにかんする知識もネットワークエンジニアやサーバーエンジニアほど専門的に深堀する必要はなくても、おおまかに知っておく必要があります。
また、一般ユーザーむけのシステムと異なり、業務処理にかんする知識も別に必要です。
在庫管理や販売管理、生産数の管理から財務管理まで、どのような業務があり、どのような作業がそれぞれ必要なのか、IT以外にかんする知識も必要不可欠と言えます。
最初からプログラマーやSEになった場合、実際のそれらの業務経験はないと言えますから、実際にその企業の行っている業務を現場で見たりするなどして研究し会得していくことが望ましいでしょう。
なお、経済産業省の報告にもあるよう、IoTやAI、ビッグデータの活用などに関わるシステム開発への需要が高まりや人材不足が予想されています。そういった意味では、業務システム開発においても、それらの最新技術の習得を目指すと良いと言えるでしょう。
5:ネットワーク系SE
企業内システムの根幹を支えるネットワークの設計・構築をするのがネットワーク系のSEです。
ルーター、スイッチなどのネットワーク機器にかんする知識はもちろん、Webサーバー、メールサーバー、ファイルサーバーなど各種サーバー自体やLinuxやUNIXなどのOSにかんする知識、TCP/IPなどの通信プロトコルにかんする知識、ルーティングにかんする知識など、ネットワーク全般にかかわる知識が求められます。
実際の機器の設置や配線、設定にかかわるのは各種エンジニアや作業者となることが多いでしょうが、小さな企業の場合SE自身が出向いて作業を担う場合も。
また、最近はすべてのサーバーを自社内に置くのではなく、ネットワークにクラウドを組み込んだり、仮想ネットワークを組んだりするなど、ネットワークの規模が大きくなるにしたがってその種類も多様化、複雑化しています。
あらかじめ受けることになると予想される負荷を想定した設計を行う必要がありますが、対コストといった面も必要とされるので、いかに限られた予算内でクライアントに適したネットワークが設計できるかはSEの腕の見せ所となります。
万が一見積もりを誤りネットワークをダウンさせてしまったなんてことになりますと、それによる損害の大きさによっては賠償問題となりかねません。
そういった意味では、求められる知識の範囲やレベルには天井がありません。
とくに大企業のネットワークを設計できるSEとなるためには、最先端の知識の習得は欠かせません。
同時に、増え続けるIT系犯罪に対し、セキュリティに対する知識習得も求められていると言えるでしょう。
6:ゲーム系SE
最近急成長している分野の1つにゲーム業界が挙げられるでしょう。
eスポーツなどという言葉が生まれたように、ゲームをスポーツ競技の一環としてとらえるようになるなど、ゲームに対するこれまでの概念が変わりつつあります。
小さなお子さまからシニア層までありとあらゆる年代がゲームに夢中になっています。
ゲームには家庭用ゲーム(コンシューマーゲーム)とオンラインゲームとに分かれますが、コンシューマーゲームのほうは、ゲーム機器本体(ハードウェア)の知識が、オンラインゲームの場合はインターネットの知識が必要となります。
ゲーム開発に主に使われるプログラミング言語は、PHPやRuby、Javaなどさまざまです。
iPhoneむけではObjective-C 、Android系ではAndroid-Javaがあります。
RPGゲームの草分け的存在として知られるドラゴンクエストを発売したスクエアエニクスではC++の知識を求めていますし、企業によって異なります。
そのため、具体的に目指したい企業があるのであれば、そこがメインに使用しているプログラミング言語から学ぶことがおすすめです。
また、ゲーム系のSEにならではのものとして、UnityやUnreal Engine 4などのゲームエンジンや、AWSなどのインフラに関する知識も挙げられます。
SEにあると役立ち資格
SEとして仕事をするうえで、必要なスキルについて説明してきましたが、そのスキルを得るためにおすすめの資格についてご案内します。
・基本情報技術者試験・・・SEとして最初に取得したい資格
・情報処理技術者試験・・・上位SEを目指すために取得したい資格
・応用情報技術者(AP)・・・上位SEを目指すために取得したい資格
・データベーススペシャリスト試験(DB)・・・最難関資格
・システムアーキテクト試験(SA)・・・最難関資格
とくに基本情報技術者試験や情報処理試験、応用情報技術者までは、ぜひ取得を目指していただきたいところです。
SEがキャリアパスと必要なスキル
各分野のSEに必要な知識がざっとお分かりいただけたと思います。
つぎに、SEが年収をアップしたり、キャリアアップするにはどのようなスキルが必要かについて解説していきます。
これからSEを目指す方にとっては、その先なんて考えられないという方も多いと思いますが、SEになった後のキャリアパスを考えておくことで、自分が本当に行きたい道を選択できたり、そのための知識を少しずつでも習得していけるのでぜひ参考にしてください。
1: プロジェクトマネージャー
システム開発を請け負うことが決まったら、基本的にSEはその商品の設計をするのが仕事です。一方でそのプロジェクト管理を行うのがプロジェクトマネージャー(PM)です。
そのシステムやネットワーク開発が大規模である場合は、基本的にPMがプロジェクト全体を管理することになります。
具体的には、プロジェクトを納期までに納品するための人員や設備・備品などの確保、スケジュール表の作成などを担います。また、システム開発はいくつかの工程に分けて行いますが、それぞれのステップでの品質管理も行います。
システム開発の専念するSEに対して、予算やコストにかんする知識も必要であり、そういった意味では管理職の立場に近いと言えます。
SEからPMへの道はわりと一般的なので、企業によっては、最初SEとして雇用しても、PMへの道を最初から示唆している場合もあります。
求人情報にもPMへの登用ありなどといった文言が見られます。
なお、大きな企業の場合、PMをサポートする立場として、PMOという部門や役職を置いている場合があります。
その場合は、PMになる前に、PMOを経由してからとなります。
いずれにせよ、PMやPMOを目指すためには、工数の計算といった実質的なスキルも必要です。
工数管理とは、必要な作業を計算することです。
あるシステム開発を1人で行う場合300日かかるとします。これを5人で行ったら60日となりますよね。このように作業を人や日数で数値化し、どれくらいの期間でどれくらいのコストで行うかなどといった計算をしていくわけです。
また、これはあくまで計画上の話なので、実際作業を行うとずれが出てきます。
工程表にしたがってスムーズに進むことが理想ですが、もし作業が押して納期に間に合わない恐れが出てきた場合、原因がクライアントの要望追加などによるものであれば納期の延期が叶いますが、原因が自社内にある場合、コストをかけても人員を増やすなどの対策も必要です。
PMになるために役立つ資格試験にはプロジェクトマネージャー試験(PM)があります。
利益にも直接かかわる職務なのでビジネススキルが要求されますが、一般的にSEより高額年収となります。
2:ブリッジSE
ブリッジSEとは、ほかのSEと比較し、やや特殊な役割です。
現在企業はグローバル化しており、開発を国内企業に頼まずに海外のベンダーに依頼するといったケースも出てきています。
なぜ日本の企業がわざわざ海外のベンダーに依頼するのかと言うと、たとえば、海外の企業のほうがその分野において優れていたり、人件費の問題でコスト的に優秀だったりといったことが挙げられます。
システム開発を担う企業としては、より高度なシステム開発を請け負えるよう、またコストも抑えられるよう努力しなければならない事態でありますが、一方で、ブリッジSEという職業が注目されているのです。
ブリッジSEとは、その海外のベンダーとの橋渡しをするお仕事です。
通常SEは自社のエンジニアまたは業務委託しているエンジニアにむけて設計書の作成を行いますが、ブリッジSEは海外にある別の企業むけに設計書を作成し、品質チェックなどを行います。
つまりITにかんする知識のほか、英語などの外国語を使いこなすことが基本的な条件となります。また、その国ならではの文化やシステム開発のルールを熟知し、ずれが生じないような設計書を作成しなければなりません。日本企業では慣習として書かなくても理解漁れることも、海外ベンダーに依頼する場合は記載しなければ理解してもらえないこともあります。
海外に在住、または留学していたことがある、外国に興味があるといった方は、SEとしての経験を積んだ後、ブリッジSEを目指すこともおすすめです。
今回はSEに必要とされるスキルについて解説して参りました。
IT技術の発展、また、法改正などによりSEを取り巻く環境は常に変化しています。
たとえば最近の例では、債権法が120年ぶりに改正され、システム開発に関係のある請負契約における瑕疵担保責任にかんして条件が厳しくなりました。
具体的には、瑕疵担保責任は引き渡しから1年間だったのが、最長10年間に延長されたのです。クライアントから契約不適合を言い渡されたら、5年後でも改修しなければならないということで、システム開発企業にとっては経営を圧迫しかねません。
そのような事態を招かないためには、やはり、SEが適格なヒアリングを行い、要件定義や基本設計時の打ち合せをしっかり行うこと、また、開発の品質管理やテストをしっかり行うことしかありません。
これからSEを目指す方には、これらのことをしっかりと頭においたうえでSEへの道を進んでいただきたいと思います。