皆さんシステムエンジニアにどのようなイメージを持っているでしょうか。システムエンジニアが実際にどのような仕事をしているのかわかっている人は少ないのではないでしょうか。なりたい職業でランクインするほど最近はメジャーな仕事ですが、現実はそこまで魅力的な職業なのか、どんな仕事をしていてどんなつらさがあるのかを今回は話していきたいと思います。
システムエンジニアの仕事内容
システムエンジニアはパソコンに向かってコードを打っているだけの職業ではありません。実際は以下のように仕事は多岐にわたります。今回はソフトウェア開発プロジェクトを例として紹介します。
システムの要件定義
クライアントが求めるシステムの機能や性能をクライアントと打ち合わせをしながら決めていきます。基本的にはクライアントとの話し合いで合意した内容を要件定義書にまとめていきます。
システムの設計
要件定義をもとにシステムの設計書を作成していきます。設計書はプロジェクトによって種類や書き方が決まっています。
今回は私が経験したプロジェクトで作成していた設計書を例として紹介します。
▲外部設計書
システムがどのように動作するかの全体像、システムの振舞いを記載します。各機能の概要や画面の操作方法、データの概要などを記載します。
▲内部設計書
システム内部の具体的な動作や構造を記載します。プログラムのロジックやデータベースのテーブル設計、API仕様などプログラムに直接関係する内容が含まれます。
▲DB設計書
システムで使用されるデータベースの構造やテーブル、カラムの仕様、リレーションシップ(関係性)、正規化やインデックス設計などが記載されます。
▲運用設計書
システムを本番運用する際に必要な手順をまとめたものです。トラブル時の対応等も記載します。
他にもプロジェクトよっては特有の設計書があると思いますが、上記はソフトウェア開発の現場なら必ずあると思います。私の現場にも色々と細かい設計書があり大変です。
プログラミング
作成した設計書に基づいて実際にプログラムを書きます。
私の経験したプロジェクトはこのプログラミング作業はオフショア開発(※1)でした。作成したプログラムを「受入」という形でレビューするのが設計者の仕事でした。
※1 オフショア開発・・・自国以外の海外に委託する形態の開発手法
試験
作成したシステムが設計通りに動作するかの確認を行います。基本的には試験仕様書を作成してから試験を実施します。システムの規模やプロジェクトのルールに基づいて様々な試験が行われます。不具合が見つかったら修正するのですがこの時の分析、再試験など試験工程での大変な仕事です。
私の経験したプロジェクトは複数の会社が携わる大規模なシステム開発を行ったため、まずは自分たちの担当領域のテスト、隣り合う領域の会社と合同でテスト、システム全体でのテストなど数カ月かけて試験が行われました。
運用・保守
完成したシステムを納品後、問題が発生しないように監視し、必要に応じてメンテナンスや改修を行います。緊急度が高い作業になることが多く、私も経験しましたが一番嫌いな仕事でした。
プロジェクト管理
要員管理、進捗管理、クライアント調整などの管理もシステムエンジニアの仕事の一つです。基本的には経験を積んだ人が任される仕事です。プロジェクト管理を専門に行うような会社もあります。
システムエンジニアは技術だけでなく、管理能力も求められます。会社によってはプログラミングしかしない、管理しかしないなど特化型の会社や、すべての作業を行うオールマイティな会社がありますので会社選びの際には注意しましょう。
システムエンジニアの仕事モデル
システムエンジニアには典型的な仕事モデルがあります。代表的な2つを紹介します。この2つさえ押さえておけば基本的には大丈夫です。
ウォーターフォールモデル
図1のようにシステム開発において段階的なプロセスを辿るモデルになります。各工程が終わった後に次のステップに進むため、後戻りが難しいです。ウォーターフォールモデルは、要件が明確で変更が少なく計画的に進められるプロジェクトに向いています。
アジャイルモデル
図2のようにアジャイルはプロジェクトを短期間で繰り返し開発します。 顧客ニーズの変化や市場環境に柔軟に対応できるため、特に不確実性が高いプロジェクトや短期間でのリリースが求められるプロジェクトに向いています。
私はアジャイルモデルの現場は経験したことがないのですが、経験者の話を聞くとウォーターフォールモデルよりも柔軟な対応が求められるため、技術力はもちろんですが高いコミュニケーション能力が必要だと感じました。
システムエンジニアの楽しいこと・つらいこと
私がシステムエンジニアとして働く中で楽しかったこと・つらかったことを紹介します。あくまでソフトウェア開発の現場としての意見ですのでそこはご注意ください。
楽しかったこと
・新しい機能を一から作ること
私のプロジェクトが基本的に既存機能の改修が多いのですが、たまに新設機能の開発要件があります。一から全てを作るのは本当に大変ですが、良い経験にもなるし自分の意見を反映しやすいので楽しかったです。
・他業界の知識を得る
システムエンジニアは金融、保険、製造など様々な業界のシステムに携わるため幅広い知識を身に着けることができます。私は保険会社のプロジェクトに携わっていたので生命保険に詳しくなりました。
・多国籍交流ができる
大規模なプロジェクトでは様々な会社、人がいるため多くの人と交流することができます。私の現場、チームにも日本人以外の方もいましたのでいろんな交流ができました。
つらかったこと
・保守
私は1年ほど保守チームを経験したのですが苦手でした。保守は柔軟な対応力と顧客調整力が必要です。顧客によっては無理難題を押し付けてくることもあるので断る力も必要になります。
・障害対応
これはシステムエンジニアには切っても切れないものになります。特にリリース直後は顧客の温度感が高いため、このタイミングで障害が発生すると深夜対応、休日対応が発生します。
・管理作業
システムエンジニアとして経験を重ねていくとプロジェクト、チームの管理ポジションに就くことがあります。管理作業は顧客調整や進捗管理が主になってくるので、求められる能力が設計開発の時と大きく変わります。私も初めて管理作業を行ったときは会議が多過ぎて嫌になりました。
・成果が見えにくい
企業向けのシステム開発を行う場合は成果が見えにくいため達成感がないです。自分が作成したシステムが動いている姿を見たい場合は、企業向けではなく一般消費者向けのシステム開発を行っているプロジェクトに参加する必要があります。
まとめ
システムエンジニアは技術力だけでなく管理能力も必要な仕事です。プロジェクトによって忙しさは変わってきますのでそこは正直運です。しかしどのプロジェクトでも休日出社はありますし、そこそこ大変だと思います。システムエンジニアは自分がやりたい仕事に就くのが非常に難しい仕事ですので、会社選びは特に慎重に行いましょう。
コメント