【エンジニア採用講座】第一回:システム開発工程とは?システムをつくる手順について解説!

エンジニア採用講座 システム開発工程とは

エンジニア採用に必要な知識量は膨大。何を勉強したら良いのか、どこまで理解しておけば良いのか、頭を悩ませている人事の方は多いのではないでしょうか。

今回、HRpediaでは「エンジニア採用担当の方が身に着けるべき知識」というテーマで連載記事を作成することとしました。
記念すべき第一回は、エンジニア採用を行うために重要な知識である「システム開発工程」についてです。

< 本記事はこんな方におすすめ >
・システムをつくる手順について理解したい
・エンジニア採用でよく見る「要件定義」や「設計」、「開発」などの用語の意味を正しく理解したい

※この記事の平均読了時間は、「3分00秒」です。

なぜエンジニア採用に「システム開発工程」の理解が重要なのか

System_development_process

エンジニアにとって、どの工程を任せてもらえるかは大きな関心事です。
また、エンジニア採用が加熱する中、任せたい工程とその工程の経験をもつエンジニアというマッチングのみでは採用が出来ない場合があります。採用できたとしても、採用コストが大幅に膨張したり、採用期間が長期化してしまうリスクが発生します。
このような事態を避けるためには、システム開発工程とエンジニアのニーズについて理解することが重要です。

例えば、一般的には要件定義など上流工程になればなるほど、希望者が多くなる傾向があります。(特にwebサービス系のエンジニアでは実装(開発)を極めたい職人気質な人もいるので、一概には言えない部分もあります)

そのため弊社では、任せたい工程よりも下流の工程の経験があるエンジニアも対象にすると採用がしやすいと提案することがあります。要件定義のポジションを採用するのであれば、設計や開発の経験があるエンジニアを狙い、開発のポジションを採用するのであれば、運用保守の経験があるエンジニアを狙うのです。全くの未経験を採用すると、採用後の教育コストが高くなってしまいますが、この方法であればバランスを保つことができるのです。

実際に、主に要件定義を行う大手コンサルティングファームでも、開発経験のあるエンジニアもターゲットにすることで、採用を加速させています。

このように「システムの開発工程」を理解しておくだけで、エンジニア採用に大きなメリットが生むことができるのです。

エンジニア採用で必要な知識「システム開発工程」を解説

家

システムの開発工程を考える時に、家を作る工程に喩えて考えてみると非常にわかりやすいと思います。

家を作るときには、まずはどんな家を作りたいかを検討し、設計図を作成し、作る手順や材料を決めます。その後、実際に作り上げる作業を行います。終盤には、実際に水漏れなどの不具合がないかをチェックし、最終的に家を引き渡します。完成した家も、何年か経てば不具合が発生するので、そのメンテナンスを都度行います。システムの開発工程も上記と同様の工程で進んでいきます。

・どんな家を作りたいのか検討→①企画・要件定義
・設計図を作成し、作る順番や作る為の材料を決める→②設計
・実際に作り上げる作業→③実装(開発・構築)
・水漏れなどの不具合がないかをチェック→④テスト
・最終的に家を引き渡す→⑤デプロイ(公開)
・何年か経てば不具合が発生するので、そのメンテナンスをする→⑥保守・運用

System_development_process

それでは、下記で、企画・要件定義から保守・運用までの詳細を紹介します。

①企画・要件定義

顧客がシステムを通して実現したい目的や要望を踏まえて、システムの全体像を明確にする工程です。

システムを作る目的や使用するターゲットを明確にします。そして目的やターゲットをもとに、システムに搭載したい機能も具体的に考えていきます。セキュリティなど、安全性についても仕様を検討することが多いです。

採用担当として覚えておきたい事

一部システム会社ではセールスが担う事もありますが、このフェーズで活躍するのが、いわゆるコンサルタントと呼ばれる人たちです。受託開発のエンジニアの方の多くの転職理由で、「上流工程をやりたい」というのがありますが、それは、この「企画・要件定義」をやりたいという意味です。 

②設計

要件定義で定めた機能について、どのように実現するか、手順を明確にしていく工程です。データベースの連携もこの工程で決めておきますし、スケジュールや費用などの検討もこの工程で行われます。この設計という工程は、基本設計と詳細設計に分けられる場合もあります。

基本設計はクライアントやユーザーから見える部分の設計、詳細設計は後工程を担当するエンジニア向けの設計です。

採用担当として覚えておきたい事

エンジニアの採用で、設計の経験のみを求められるケースはほとんどありませんので、設計という工程があるぐらいの理解で問題ありません。エンジニアの中で、「アーキテクト」「テックリード」と呼ばれる人たちはこの設計にメインで関わる人たちなので、知っておいても良いかもしれません。

実装(開発・構築)

programing

ここが一番イメージがつきやすい工程かと思います。黒い画面に、JavaRubyなどのプログラミング言語を打ち込んで実際にシステムを作っていくのが、まさにこの実装です。アプリケーションの場合は「開発」、インフラの場合は「構築」と呼ばれるケースが多いです。

Webサービスを運営する会社で、アジャイルで開発する場合は、この開発工程が非常に重要になってきます。

採用担当として覚えておきたい事

受託開発企業の採用で、要件定義や設計をメインに行うポジションであっても、「手を動かせるエンジニアが欲しい」と言われるケースが多くあります。その「手を動かせる」というのが、この実装経験を持つか否かを意味するのです。コンサルファーム出身者や、事業会社の社内SEの方の多くはこのフェーズを委託しているので経験がなく、採用対象として外される場合もあります。

④テスト

テストというのは、開発したシステムが期待通りに動作するか、構築したシステムが仕様書通りの機能や性能要件を満たしているかについて検証する工程です。

「単体テスト」「結合テスト」「受入テスト」に分けられます。

プログラムや機能ごとの確認を行う単体テスト、プログラムを結合してバグがないかを確認する結合テスト、そしてお客さまによる完成度チェックを行う受入テストとなります。

⑤デプロイ(公開)

ユーザーが使える状態にすることを意味します。デブロイすることでシステムが完成します。

⑥保守・運用

作ったシステムの健康状態を監視し、システムを不便なく使えるように維持管理することです。保守・運用を行うことで、作ったシステムを継続的に稼働し続けることができます。

エンジニア採用に重要な「システム開発工程」全体像

最後にもう一度おさらいです。

System_development_process

おわりに

本記事では、システム開発工程について解説しました。
これで、エンジニアの職務経歴書から、自社のポジションにマッチする人材かどうか、最初の判断ができるようになるのではないでしょうか。

第二回は、システムの仕組みについての解説記事です。システムはどのように動くのかはわかりにくい部分ですが、是非読んでイメージを掴んでみてください。

PRO SCOUT スカウト代行 エンジニア