AIやIotといったデジタル技術を活用し、ビジネスや生活を支え、「DX(デジタルトランスフォーメーション)」を推進できるかどうか。国全体として今後の創造的未来を築き上げていくためには、高度なスキルを持ったシステムエンジニア(SE)やプログラマーが必要不可欠です。しかし、IT業界への就職を目指すうえで、「システムエンジニアとプログラマーの違いがよくわからない」という声をよく聞きます。本記事ではシステム開発工程の流れをふまえながら、システムエンジニアとプログラマーの違いについてご紹介します。
記事の概要
システムエンジニアとプログラマーの違い
スマートフォンのアプリを使った決済や駅の自動改札機など、私たちの日常生活にはあらゆるシステムが使われています。システムエンジニアやプログラマーは最新のシステム開発に加え、既存システムの修正や保守も大事な仕事。「自分が関わったシステムが社会生活の支えになっている」というやりがいも大きな魅力です。それぞれの仕事内容についてみていきます。
システムエンジニアとは
システムエンジニアは、新たなシステムを作りたいというクライアント(依頼人)から希望を聞き、必要な機能や条件を具体的にしていく仕事です。なぜそのシステムが必要なのか、目的や概要をできるだけ詳しくヒアリングし、クライアントのイメージやアイデアを明確にしていきます。新たなシステムを必要としている現場の声をまとめ、システム設計書や開発プロジェクト全体のスケジュールを作成。完成までの道のりをサポートし、開発チーム全体のマネジメントを行います。また、新システム稼働後の修正やアップデートなどの運用保守も行います。ITスキルはもちろん、クライアントや開発チームなど人との関わりが多いため、コミュニケーション能力やプレゼンテーションのスキルも必要な仕事です。
プログラマーとは
プログラマーはシステムエンジニアが作成した設計書をもとに、実際にコードを書いてプログラムを作成する仕事です。「C言語」や「Java」、「HTML」・「Python」・「PHP」といったプログラミング言語を使いこなせるスキルが必要です。料理でいえばすでにレシピ(設計書)がある状態で、料理を作るシェフのような存在。どんなに夢のあるプロジェクトやシステム開発でも、プログラムを作れる人がいなければただの幻想で終わります。設計書に沿ったシステムを開発できる高度なスキルが求められ、エラーを修正してスケジュール期間内に完成させるスピード感も必要です。
どちらも医師免許のような特定の資格は不要ですが、スキルアップや転職活動においては国家資格や民間資格を取得していると有利です。国家資格である「基本情報技術者試験」や「応用情報技術者試験」、「システムアーキテクト試験」、民間資格の「オラクルマスター」や「マイクロソフト認定システムエンジニア」などがあります。短期間での勉強だけでは合格は難しく、働きながら挑戦する方がほとんどです。専門知識とスキルに特化した「ゲームプログラマー」や「クラウドゲームエンジニア」、通信設備を支える「ネットワークエンジニア」、「セキュリティエンジニア」といった新たな職業も誕生しています。
システム開発の工程解説
IT業界での就職を目指しているなら、システム開発の工程を詳しく知る必要があります。工程を理解するとシステムエンジニアとプログラマーの仕事の違いをイメージしやすくなります。
システム開発について
システム開発は、多くの人に使われる生活インフラとなるものから、企業内で業務効率を高めるための独自システムなど多岐にわたります。企業単独で開発会社に発注したり、企業や業界の枠をこえてプロジェクトが組まれたりしますが、多くのシステム開発はチームを組んで進められています。
システム開発の種類
- 法人企業やグループ・組織内での基幹システム
生産・販売管理や財務・会計など、経営における業務の効率化を図るためのシステムです。エラーやアクシデントが起こると自社内だけでなく外部にも影響することもあり、安定したシステム運用が求められます。 - 顧客情報管理システム
大量のデータベースを扱い、顧客情報を守るための管理システムです。営業活動や広報活動に役立つよう、検索や照会機能の充実が求められます。 - ECサイトでの販売や予約などのWEBシステム
インターネットを利用して予約・受付・発送準備・販売・アフターフォローまで行えるようにするシステムです。業務効率化と売上に大きな影響を与えるため、運用開始後の保守作業も欠かせません。 - 制御系システム
車につけるカーナビや自動で動いてくれるロボット掃除機など、家電や輸送機、医療機器に組み込むシステムです。必要とする特定機能を絞り、目的に合ったシステム開発プログラムが求められます。
大まかにわけると、Webシステム上で動くアプリ制作やソフトウェア開発も、システム開発の一部といえます。システムを使用する人の人数や頻度、内容によってかかる開発費用も変わるため、ヒアリングをするシステムエンジニアは予算の確認も必要となります。
システム開発の工程
システム開発の流れを大きく分けると、
① 企画・要件定義
② 設計
③ プログラミング
④ テスト
⑤ リリース・保守
となります。システムエンジニアが中心的に関わる工程は「企画・要件定義」「設計」「リリース・保守」となり、プログラマーは「プログラミング」「テスト」の段階に主に関与していきます。
①企画・要件定義
何を目的としたシステムか、必要な機能や条件を明確にしていきます。システムエンジニアがクライアントから丁寧にヒアリングを行い、相手のイメージを具現化していき、設計書におとしこめるようにする工程です。クライアント内部のみで新システムを使う場合、クライアントのお客様も使用する場合など、使用する状況によっても要件は異なります。要件定義段階で足りない部分があると、その後の工程すべてが変更することに。システムエンジニアのヒアリング力が開発プロジェクトの成功の鍵を握っていると言っても過言ではありません。
②設計
イメージが明確になったら、システムの元となる設計書を作成します。全体の概要となる基本設計からシステム細部に至るまで詳しく定めた詳細設計まで、わかりやすいように作成します。実際にプログラミングを行うのは次の段階になりますが、プログラマーとしての経験やスキルが設計書作成スキルにもつながります。システムの業務フローや機能一覧、入出力条件などを作成し、スケジュールも提示して開発プロジェクト全体の流れを作ります。
③プログラミング
設計書をもとにプログラミングを行います。この工程を担当するのがプログラマーであり、プログラミング言語を駆使してシステムを実際に作る作業です。設計書はあくまで大まかな概要を記したものなので、必要な動作をどういったコードで作るかはプログラマーの腕次第。スキルの正確さとレベルによって動作環境やバグの発生率も変わってきます。プログラム単体においては動作チェックまで行い、もし修正(バグ)があるときはシステムエンジニアと相談しながら改良していきます。
④テスト
システムの細部それぞれでプログラミングが終わったら、システム全体として正確に稼動するかどうか、テストを行います。主に、単体テスト・結合テスト・総合テスト・受入テストの4段階があり、詳細設計や基本設計に定められたものかどうか、要件定義をクリアしているかなどをチェックします。外部システムと連携する場合は外部結合テストまで行い、不具合がないかを確かめます。複雑なシステムほど1つのバグが細部のシステムにも影響するため、地道な検証作業が必要となります。
また、システムが正常に稼働するか以外にも、あえて負荷をかけて耐久性やキャパシティも確認します。稼働後に想定外のことが起こってシステムダウンすることを避けるため、システムエンジニアもプログラマーも協力し合いながらテストを進めていきます。
⑤リリース・保守
テスト完了後は実際にシステム運用を開始し、保守作業を行います。操作マニュアルも作成し、クライアントへ引き渡しとなります。リリース後も細かな修正や点検を行い、使いやすいシステムを構築。プロジェクトチームを組んでいる場合は契約終了後にチーム解散となり、新たなシステム開発に携わるシステムエンジニアもいます。
上記の流れは「ウォーターフォール」と呼ばれる開発手法の工程です。工程を複数に分け、滝のように上流工程から下流工程へと流れるような進め方です。基本設計書をベースに進捗管理をしやすいというメリットがあります。デメリットとしては、開発途中で新たな機能を追加したり変更したりすることが容易ではありません。開発手法によって開発工程も異なってきますので、クライアントとの打ち合わせやプロジェクト発足時に確認が必要です。
SEやプログラマーの海外事情
国際的な情報化社会が急速に広がり、システムエンジニアやプログラマーといったシステム開発を支える人材確保はどの国でも必要です。国や企業によって労働環境そのものが異なることもあります。特に給与面では日本に比べて海外の方が高い傾向にあり、約2倍とも言われています。休暇制度もしっかりしており、日本のような長時間残業や休日出勤もありません。
給与や休日のとりやすさといった部分で就職先として海外を目指すメリットは多々ありますが、そこには「実力社会」という厳しい現実もあります。海外で働く場合、「入社してから一人前のエンジニアに育てる」といった企業風土は少なく、常に即戦力としての働き方が求められます。日本では高校や専門学校を卒業し、企業に入社してから新人教育を受けて経験を積むことができます。システムエンジニアもプログラマーも、プログラミング言語や基本的なITスキルといった学ぶべき基礎は同じ。進路として海外を視野に入れているなら、学生のうちから日常英会話やビジネス英語も積極的に学ぶ必要があります。
おわりに
本記事ではシステム開発工程やシステムエンジニアとプログラマーの違いの解説を行いました。さまざまな分野でDXを進める日本ではニーズもあり、システム開発は次世代の暮らしを支える重要な仕事です。プログラマーとシステムエンジニア両方のスキルを持っていれば、スペシャリストとして国内・国外問わず働ける可能性もあります。IT業界への就職を考えているならプログラミングやITスキルを高め、将来の仕事の幅を広げていきましょう。