SE(システムエンジニア:System Engineer)とはソフトウェア開発で上流工程を担う役割の人です。
一般的には「要件定義、基本設計、詳細設計、システムテスト」などを行います。
SE(システムエンジニア)の仕事
SE(システムエンジニア)の仕事はシステムの機能を決めたり、設計したりすることです。
また、プログラマーが作成したプログラムが設計した通り動作するか最終チェック(システムテスト)を行います。
SEは上記の「要件定義」「基本設計」「詳細設計」「システム試験」を行います。
要件定義
「要件定義」はソフトウェアの発注元とどのようなシステムを作りあげるのか打ち合わせをし、システムの実装すべき姿を明確にします。
この段階で「システム要件」を詰めておかなければ、出来上がったものが使い物にならないということになるので、細心の注意が必要です。
基本設計
「基本設計」はシステムの機能を洗い出し、どのような構成で動作させるのかを決めていきます。
画面の遷移や操作方法、データの流れなどを決定し、利用するフレームワークや、ミドルウェア、必要な環境なども決めていきます。
詳細設計
「詳細設計」では基本設計で決めた各機能の内容を細かく設計していきます。
この段階で出来上がったドキュメント(文章・資料)を基にプログラマーは実際にプログラミングを行っていきます。
システムテスト
「システムテスト」はプログラマーが作成したプログラムがシステム全体を通して、設計した通り正しく動作するかを確認していきます。
システムを納品(リリース)する前の最終確認なので、念入りにさまざまなパターンを想定してテストを行います。
SE(システムエンジニア)の1日
SE(システムエンジニア)は基本的にはプログラミングは行いません。
その代わり、お客様との仕様打ち合わせや、機能の検討などパソコンに向かわない作業も多くあります。
ほとんどパソコンを触らずにずっとボーっと(いや、ちゃんと機能などを考えている)時もあります。
(決して仕事をしていないわけではない。)
基本、1日中「頭使って」ます。
SE(システムエンジニア)に必要な能力
SE(システムエンジニア)に必要な能力は
- コミュニケーション能力
- 創造力
- 想像力
- ソフトウェアに関する知識
です。
SE(システムエンジニア)はソフトウェア開発の中で「人と話して意図をくみ取って、具現化する」仕事を担っています。
当然、ソフトウェアに関する幅広く深い見地が必要ですが、コミュニケーション能力もそれと同様に重要な必要スキルです。
SE(システムエンジニア)はプログラミングしない?
こうやって書いていくと「SE(システムエンジニア)はプログラミングしないの?」と疑問に思われるかも知れません。
実際は「プロジェクト」によります。
よくあるのは設計工程(基本設計、詳細設計)をやってそのまま「プログラマー」として「プログラミング、単体テスト」を行って、またシステムテスト(SEのお仕事)に戻るパターンもあります。
(・・・全部やってる。)
大きなプロジェクトであれば明確に「SE」と「PG」は分かれていることもあります。
まとめ
SE(システムエンジニア)の仕事は上流工程と呼ばれる「要件定義」「基本設計」「詳細設計」「システム試験」などの工程の作業を行います。
SE(システムエンジニア)はPG(プログラマー)より高単価で仕事を行えることが多いので、積極的にコミュニケーション能力を高めてSE(システムエンジニア)を目指しましょう。