こんにちは。
今回の記事は、これからIT業界を目指す方、あるいはIT業界の経験が浅い方向けになります。
さて、皆さんがITエンジニアの仕事として思い浮かべるものは何でしょうか?
ITエンジニアにはいろいろな職種がありますが、大きくは開発エンジニアとインフラエンジニアがあり、開発エンジニアの中でも特によく聞くのは、システムエンジニア(SE)とプログラマ(PG)です。今回はこの二者の仕事について説明します。
システムエンジニアとプログラマ
それぞれの仕事内容は次の通りです。
システムエンジニア(SE)
- 顧客の要望を聞いて、どんなシステムを作るのかを明確にする。
- システムをどのように実現するか、ハードウェア・ソフトウェア両面から検討・決定する。
- システムに必要な機能を切り分けて、それぞれの仕様を決定する。
- 仕様を実現できるように機能の設計を行う。
- システムが仕様に沿っているか、要望に沿っているかを確認する。
プログラマ(PG)
- 設計に沿ってプログラミングを行う。
- 設計通りにプログラムが作られているか、テスト仕様書を作成し、テストを行う。テスト結果を第三者から見て確認できるよう、エビデンスを作成する。
- 各機能を連結させて、期待通りに動作するかを確認する。
システム開発工程とエンジニアの役割
システム開発の工程別にSEとPGの作業を説明します。
システム開発のモデルとしてV字モデルというものがあります。要件定義からシステムテストまでの工程を、コーディングを頂点にV字の形でモデル化したものです。
「要件定義」を確認するのが「システムテスト」、「基本設計」を確認するのが「結合テスト」、「詳細設計」を確認するのが「単体テスト」と、対応関係があるのが特長です。
SEは、主に「要件定義」と「システムテスト」、「基本設計」と「結合テスト」を担当します。
PGは、主に「詳細設計」と「単体テスト」および「コーディング」を担当します。
しかしながら、SEがコーディングを行ったり、PGが基本設計を行ったりすることもよくあるので、両者の厳密な区別はないと言えます。
システムを実現するのに必要なスキル
さて、何か「もの」を作るときは、どんなものを作るのか、何のために作るのか、誰のためにどうやって作るのか等を明確にしないと良いものは作れません。それはシステムにおいても同じです。
では、良いシステムを実現するためにどんなスキルが必要なのでしょうか。ここではその一部を紹介します。
システムエンジニア(SE)
- 顧客の要望を文章化・具体化できること。あいまいなところがあれば顧客に提案・アドバイスして明確にできること。
- システムに必要な機能を明確にでき、設計に落とし込めること。
- 機能面だけでなく、ソフトウェアの信頼性、使いやすさ、性能、リソースの効率性、保守性、セキュリティなど、非機能性を考慮した設計ができること。
- 要件定義、基本設計に基づき、設計内容を網羅しているか、異常処理の適切性などの面でテスト項目を作成できること。
プログラマ(PG)
- 要件定義、基本設計の内容を理解し、詳細設計を作成できること。
- プログラミング言語、フレームワーク、開発環境等の知識があり、コーディング作業を行うことができること。
- 単に詳細設計内容をコードに落とし込むだけでなく、処理性能、無駄なリソース資源の浪費、他の人が修正しやすいか等を考慮したコーディングができること。
- ブラックボックス試験、ホワイトボックス試験について理解し、単体テスト仕様書を作成できること。
一人前のエンジニアになるために
エンジニアに必要なスキルは、一見すると広範囲で多く感じられるかもしれません。しかしながら、ITエンジニアとして経験を積んでいけば、徐々に内容を理解することができるでしょう。もし自身にこのスキルが足りていないなと感じれば、その時に勉強しても決して遅くはありません。
皆さんが良いエンジニアとなって活躍できることを祈っています。