上流工程とは、要件定義・開発計画・システム設計など、システム開発における前半部分を担うプロセスです。
上流でしっかりとした土台を作ることが、プログラミング作業をはじめとする下流工程をスムーズに進めていくうえで重要となります。
本記事では、エンジニアとして知っておきたい上流の工程のフローや、やりがいについて解説していきます。
上流工程の具体的な仕事内容は?
上流工程では、システムの構想や設計を行います。具体的には、要件定義やシステム設計を行い、スムーズなプログラミング開発に引き継ぐことを目指します。
上流の工程とは?
上流の工程とは、システム開発の基盤を整える部分です。システムの開発における一連のフローを川の流れにたとえて、前半部分を上流、後半部分を下流といいます。
上流の工程では主にシステムの企画と設計を行っており、細かく見ていくと「要件定義」「外部設計」「内部設計」「構成管理」「計画立案」などに分けることができます。
全体の流れとしては、はじめに顧客へのヒアリングを実施します。ここで、顧客のニーズをはっきりと掴むことが重要です。
特に、ウォーターフォール開発を行う場合は、後から機能を追加することが困難なケースもあるでしょう。もし、顧客からの要望が追加されそうな様子であれば、アジャイル開発で進めていくのがおすすめです。
システム開発の仕事は、顧客にサービスを納品することがゴールではありません。実際に顧客の環境でシステムが稼働してからがスタートでもあります。
OSの更新や機材の入れ替えなどに応じて、システムをアップデートする必要もあるため、上流の工程の技術者は継続的なサポートを提供することになるでしょう。
また、トラブルが発生した際の窓口となるのも、上流の仕事です。損害を最小限に抑えて、いかにトラブルを収束させていくかといった技量も、上流の技術者に求められるスキルとなっています。
システム開発の手法と上流の工程の関係性
システム開発には、大きく2つの開発手法があります。
1つ目は
ウォーターフォール開発です。ウォーターフォールとは、工程を「企画」「設計」「実装」「テスト」に分割し、それぞれの工程を決められた技術者が担当します。
上流の工程では、要件定義とシステム設計を行う際、実装する機能がすべて決定している状態です。
もう1つは
アジャイル開発です。アメリカで誕生したアジャイル開発は、2000年代半ばに日本国内でも取り入れられるようになった開発手法です。
アジャイルは「素早い」「機敏」と訳すことができます。短納期が求められるシステム開発において、より短いスケジュールで開発・リリースすることを目的とした方法です。
アジャイル開発では、機能ごとに「企画」「設計」「実装」「テスト」を細かく繰り返してシステムを作り上げていきます。よって、上流の工程と下流の工程の連携が一層重要となってきます。
また、ウォーターフォール開発とアジャイル開発を融合した
ハイブリット開発も注目されています。上流の工程はウォーターフォールで明確に定義付けを行い、下流の工程はアジャイルで臨機応変に開発を行うといった方法です。
開発するシステムの種類によっては、ハイブリット対応を行うのが適しているケースもあります。
今後エンジニアとして働きたいと考えているのであれば、ウォーターフォール・アジャイル・ハイブリットの3種類を覚えておくと良いでしょう。
上流の工程で技術者として働くためには
上流の工程で技術者として働くためには、2つの方法があります。
1つ目は今いる会社で、エンジニアとして異動希望を出すことです。もし、社内にSEやITコンサルタントの職種があれば、まず社内で経験を積むのが良いでしょう。
実務に携わりながら、少しずつITスキルを身につけることで、ステップアップ転職も夢ではありません。
2つ目は、ITに関する資格を取得して転職する方法です。SEやITコンサルタント向けの資格としては、情報セキュリティマネジメント試験、基本情報技術者試験、応用情報技術者試験などが挙げられます。
もし、転職したい企業や職種が明確になっているのであれば、上級者向けのデータベーススペシャリスト試験、情報処理安全確保支援士、プロジェクトマネージャー試験などもあります。
ただし、かなり専門性の高い内容となっているので、難易度は高めです。
上流工程のフローとは?
ヒアリングの次は、システムに必要な機能の選別とカスタマイズが必要な設計を洗い出します。同時にシステムが完成するまでのスケジュールも固めていきます。
システム開発は短納期が好まれる傾向ですが、あまりにタイトなスケジュールを立ててしまうと、下流工程の負担が増加して思わぬトラブルに繋がりかねません。下流のリソースやスキルを考慮して無理のない開発計画を立てることが大切です。
また、さまざまな業界で自動化やITの導入が進んでいるなかで、システム開発の在り方も多様化しています。大規模な導入や既存のサービスとの連携など、システム開発が複雑化するなかで、上流の工程に関わるトラブルも発生しています。
トラブルの事例としては、開発コストの増大が挙げられます。アジャイル開発は開発途中でも機能の追加をしやすいとメリットがある一方で、費用追加によるトラブルが起こりやすくなるというデメリットもあります。
システム開発を受注するときは、競合他社よりも費用を抑えて提案したくなりますが、最小値だけでなく追加を想定した最大値を提示するなど、トラブルを未然に防ぐ工夫が必要です。
この見積もりを設定する作業も、上流の流れのひとつです。適切な見積もりを出すためには、顧客へのヒアリングを正しく行い、現実的な開発計画を立てるスキルが必要です。
下流工程の技術者と同等のプログラミングスキルを求められることは稀ですが、システム設計ができる程度の知識は持っておくと良いでしょう。
上流工程と下流工程との違いは?
上流の工程ではシステム設計を行い、下流の工程で実装するプログラム開発を行うのが一般的なフローです。
上流の工程
下流の工程がスムーズに進行するためには、上流の工程で顧客の課題と必要な機能をズレなく定義することが重要です。
上流では、プログラミング言語をはじめとする専門知識がなくても、システムエンジニア(SE)として働くことは可能です。
要件を定義するためのヒアリング力を求められることもあるため、コミュニケーションスキルに強みがある人にも向いている仕事です。
下流の工程
下流工程では、プログラミングスキルを持つ技術者が、実装作業(コーディング)を行っていきます。下流工程に関わる技術者は、専門知識が必要不可欠な業務内容と言えるでしょう。
下流工程では要件定義にマッチするよう、プログラミング言語を用いて開発を進めていきます。また、正しくシステムが動くかをテストする業務も非常に重要です。
顧客先で導入したあと、何らかの不具合が発生すると、大きな損害に繋がりかねません。さまざまな条件を想定して、繰り返しテストを実施します。
上流工程が担う責任
基本的に、下流工程は上流の指示に従って作業を行います。よって、システムの不具合以外のトラブルは上流工程の責任となる場合がほとんどです。
「依頼したはずの機能がついていない」「ほかのシステムと連携がとれていない」といったトラブルは、要件定義の不備に起因します。
致命的な問題が発生してしまうと、開発プロジェクト自体が頓挫してしまうおそれもあるため、上流の工程の技術者は大きな責任を伴う仕事と言えるでしょう。
上流工程のやりがいとは?
責任が大きいぶんだけ上流の工程はやりがいのある仕事でもあります。
上流は、いわばシステム開発の旗振り役です。顧客と下流工程の技術者を繋ぐ重要な役どころで、上流のエンジニアがいなければシステム開発は成り立ちません。
また、できあがった商品やサービスを販売する営業とは異なり、自分の頭をつかって新しいものを生み出すことができる点も大きな魅力です。
上流の仕事はチームで実施することが多く、責任を一人で背負うケースはほとんどありません。チームで一丸となって目標を達成することは、大きなやりがいにも繋がります。
上流の工程に携わる職種は、主にSEやITコンサルタントが担います。SEとITコンサルタントになるためには、これから紹介する3つのスキルがあると便利です。
-
- コミュニケーションスキル
- 顧客へ適切にヒアリングを行うのはもちろん、下流工程の技術者と円滑なコミュニケーションを取ることも、上流の技術者には必要です。
-
- マネジメントスキル
- システム開発では、アクシデントが起きやすく、臨機応変な対応が求められます。SEやITコンサルタントは、自分がプレイヤーとして動くだけでなく、社内外の調整役としても立ち回る能力があると良いでしょう。
-
- ITスキル
- IT業界は流動性が高く、情報もツールも日々更新されていきます。上流の工程では、実際にコーディングを行う必要はありませんが、最新のITスキルに関するアンテナは張っておきましょう。
コツコツと作業を行うことが好きな人は下流の工程が向いていますが、人との関わりを持って仕事をしたい人には上流の工程がおすすめです。
特に上流の仕事は、自分で考えて定義したものがシステムという形になって見えるので、充実感や達成感も大きくなります。顧客から直接「ありがとう」といった感謝を伝えられる点も、やりがいに繋がるでしょう。
SEやITコンサルタントの仕事はシステムの品質を左右する重要な役回りです。責任は大きいですが、チームで試行錯誤しながら目標を達成したいという人にはぴったりの仕事と言えるでしょう。
上流工程のエンジニアに求められるスキルとは?
上流工程のエンジニアはクライアントとミーティングする機会も多く、幅広いスキルを求められます。
上流工程のエンジニアに必要なスキルとして、まず挙げられるのがマネジメントスキルです。上流工程のエンジニアは下流工程のエンジニアとうまく連携を取らなくてはなりません。
割り振るタスクの管理やスケジュールの調整を通して、チームが円滑に仕事を進められるようにマネジメントする能力が求められます。
特に、下流工程のエンジニアはスキルに差がある場合が多く、スキルの高い人に業務が集中しがちです。業務の量が偏って不満の温床とならないように、細かな配慮を心がける必要があります。
次に、ヒアリングスキルも上流工程のエンジニアに必要なスキルの一つです。上流工程では、クライアントの要望を聞いたうえで課題解決に役立つシステムを設計していきます。
クライアントがどのような点に困っているのかを具体的に聞き出し、認識をすり合わせながら提案していく能力が求められます。
最後に、設計書作成スキルも当然必要です。下流工程において発生する作業なども考慮しつつ、ゴールを設定して完成までの具体的な道筋を見極め、不備が起こらないようにシステムを設計する必要があります。
上流工程のエンジニアにおすすめの資格とは?
上流工程のエンジニアを目指しているのであれば、仕事に役立つ資格を取得しておくことをおすすめします。
上流工程のエンジニアにおすすめの資格として、まず挙げられるのが国家資格の
「応用情報技術者試験」です。IT系の資格の中でも特に知名度が高く、取得しておけば企業からの厚い信頼を獲得できます。
情報処理推進機構が主催しており、設計やプロジェクトマネジメントなどについて出題されるので、試験勉強を通して上流工程に必要な知識を身に付けられます。
次に、
「データベーススペシャリスト試験」もおすすめの資格の一つです。システム開発には必ず求められるデータベースに関する知識や実技能力が試されます。
こちらも国家資格で、エンジニアとしての能力を証明しやすいので取得することをおすすめします。
続いて、
「システムアーキテクト試験」はアーキテクチャ設計に関する知識を問われる資格です。クライアントの課題を正確に理解し、システム設計に落とし込むうえで、試験で問われる内容が役立ちます。
その他、日本オラクル社が主催する
「オラクルマスター」では、データベースに関する知見が求められます。
世界でも通用する
「PMP」は、プロジェクトマネジメントに必要な知識が問われる資格です。
上流工程のエンジニアを募集する企業とは?
システム設計には上流工程と下流工程があり、すべてのIT企業で上流工程のエンジニアとして働けるわけではありません。上流工程のエンジニアを目指すときは、どのような企業で上流工程を請け負っているのか確認しておきましょう。
最初に挙げられるのがITコンサルティング企業です。ITコンサルティング企業では、クライアント企業のシステム計画の立案やIT戦略の提案などを行っています。
クライアント企業が抱える課題をITを通して解決するという役割を担っており、クライアント企業のシステム導入をサポートする際などに上流工程のエンジニアが活躍します。
次に、大手SIer企業も上流工程のエンジニアが働ける企業の一つです。システム開発を行っている企業の中でもとりわけ規模が大きく、上流工程に包括的に携わっています。
最後に、シンクタンク企業でも上流工程のエンジニアは活躍することができます。
研究機関における調査の一環として、ITコンサルティングなどのサービスを展開しているのです。
上流のエンジニアに転職するには
すでに下流工程の技術者として働いている人は、上流工程への転職はしやすく、待遇の改善も期待できます。企業によって差はあるものの、一般的に上流の給与は下流よりも高く、収入面での満足度は高い傾向にあります。
知識がないもののSEやITコンサルタントに興味がある人、下流での勤務実績を活かして働きやすい職場を探している人にとっては、上流工程はおすすめの転職先と言えるでしょう。