上流工程と下流工程の違いとは?【年収が高いのは上流工程のエンジニア】

IT業界のエンジニアには「工程」という言葉で区分けされます。

上流工程と呼ばれるお仕事を担当する人と、下流工程と呼ばれる仕事を担当する人。

大きくこの上と下2つに分類されています。

ピカタロウ

システムエンジニアの中には、自分が上流の仕事してるとか認識せずに仕事している人も結構いるんじゃないですかね?

自分も業界に入って数年間はあまり工程って意識しませんでした。

ここでは、そんな上流工程と下流工程の違いをご紹介してみます

上流工程と下流工程

上流工程と下流工程の違い

上流工程と下流工程て何が違うのか?

まずはこちらの図をご覧ください。

システム開発には、いくつかの工程がありますが、大きく分類すると図のようになります。

主に上の方の工程を担当するのが上流工程で、下の方を担当するのが下流工程です

各工程の中身

工程の中身はこんな感じです。

要件定義

プログラムを作成する時、お客様の要求をすべて受け入れていたらお金と時間がいくらあっても足りません。

  • どんな機能を実現してほしいのか?
  • どんな要望を満たせばいいのか?
  • どんなオプションをつけてほしいのか?
  • 予算はいくらなのか?
  • 納期はいつまでなのか?

こんなプログラム作成に入る前の前提条件を顧客と詰めていくのが要件定義です。

ここが固まらないとプログラム作成はできませんし、この要件がプロジェクトの命運を分けるのです。

要件定義が固まっていないプロジェクトは、間違いなくエンジニアが炎上するか?利益が全くでないか?悲惨な結末を迎えます。

そのため、的確に要件定義ができるようになるには、そこそこの経験が必要になってきます。

設計

設計はプログラムを作成するための設計書を作る工程です。

プラモデルや組み立て式の家具を購入すると設計書が入っていますよね?

まずはこのパーツとこのパーツをくっつけて、次はこのパーツを組み上げて、最後にこのパーツをはめ込む。

設計書通りに作らないとプラモデルや家具はまともに組みあがりません。

プログラムの設計もそれと同じことです。

例えばWebアプリケーション作りならざっとこんな感じになりますよね。

  • どんな言語で作るのか?
  • どんな機能を何で実現するのか?
  • どんな画面にするのか?
  • どんな画面の移動をしていくのか?
  • このボタンをおしたらどんな機能を呼び出すのか?
  • データベースにどんな情報を登録するのか?

などなど・・・

プログラムが出来上がるまでの過程を設計して設計書に起こすのが設計工程です。

製造

ここはいわゆるコーディングと呼ばれる開発製造工程です。

要件が固まり、設計書が出来上がったら、設計書通りに動くプログラムを実際に書いていきます。

実際にはプログラムを1から書いていくということはなく、フレームワークと呼ばれるサービスを使いプログラムを組み上げていきます。

設計書に書かれた機能が実現できるか?

エラーが出たらプログラムコードを紐解いていき、ひたすらコードを修正するというデバッグという作業を行います。

プログラミングスキルが存分に活かされるのはこの製造のフェーズです。

試験

試験工程では組みあがったプログラムが正常に動作するかテストしていきます。

まずは単体試験と呼ばれるプログラム自身が正しく動くかをテストします。

単体試験で問題がなければ、結合試験というフェーズに進みます。

結合試験では、実際にプログラムをサーバと呼ばれるマシンに配置して、通信が問題ないか?期待通りの動きをするか?

徹底的にテストしていきます。

その後、総合試験などのステップを経てようやく納品となります。

上流と下流の決定的な差とは?

上流工程と下流工程の違いはわかったと思いますが、上流と下流には決定的な差があります。

それは・・・

与えられた仕事だけやるのが下流工程で自分の頭で考えなきゃイケないのが上流工程

下流工程というのは、ただひたすら設計書通りに動くようにガリガリとプログラムコードを書いたりテストする、言わば作業なんです。

一方の上流工程は、顧客との折衝をしたり、予算の調整をしたり、要員の調整をしたり、スケジュールを調整したり・・・

正解のない答えを探し続ける頭脳労働なんです。

この差が上流と下流の決定的な差なのです。

上流と下流どっちが稼げるのか?

ただひたすら与えられたことだけをやっているプログラマよりも、いろいろと頭を使わないとできない上流工程の仕事の方が明らかに年収は高いです

大手SIerのプロパと呼ばれる正社員は、みんな若いうちから上流工程しかやりませんしやらせてもらえません。

なので中小企業のエンジニアよりも大企業のプロパ社員は、当然高い給料をもらってます。

一方、ただひたすら人の指示通りに動く下流工程のエンジニアは、上流の人たちよりも考える能力がありませんので安月給になってしまいます。

大企業、中小企業に限らず、下流工程の経験しかないエンジニアは、なかなか給料が上がらず、上流工程に進めるようになるとエンジニアの価値と同時に収入も上がっていきます。

下流工程のプログラマじゃダメなのか?

それじゃプログラマとかってダメなの?

と思うかもしれませんが、全くそんなことはないんです。

例えば前述した大企業の場合、上流工程の中のホントの上の部分しかやりません。

工程で言えば要件定義とスケジュール管理くらいまで。

製造はもちろん設計もやったことがないエンジニアが多く、そんな人たちは大企業を離れてしまうと意外とつぶしが効きません

一方プログラマであれば、腕さえあればどんな会社でもいくつになっても仕事を続けていくことができるのです。

そして技術力の高いプログラマは、経験と共に収入も上がっていきますので、長い目で見れば下流工程と呼ばれるプログラマでも高収入を得ることができるのです。

ピカタロウ

上流と下流って職人と営業の差みたいなものですね。

職人なら技術さえ確かなら年齢を重ねても仕事はいくらでもありますからね。

60歳で年収800万円稼ぐオバサンプログラマの経歴紹介【インタビュー形式】

上流工程の仕事は、高いお金をもらえる代わりにストレスも半端ありません

一方プログラマは自分の能力以上の仕事はしなくていいので、その分気楽にできるメリットがあります。

将来要件定義とか設計とかやりたい!という人は上流を目指せばいいし、プログラムを極めたい!という人は下流工程を究めればイイ。

上流・下流どちらが優れているということはありません。

まずはプログラムを始めてみて、自分に合った道を探せばいいんです。

ずっと下流の仕事しかやらせてくれない会社なら上流を任せられる会社に転職。

逆に上流の仕事が向いてないのなら下流の仕事をメインに取り扱っている会社に転職。

自分の特性を見極めて少しでも条件の良い会社を探し続けるのが、システムエンジニアが最も幸せになる道だと思います