SE転職において頻出する単語、「上流工程」と「下流工程」。これらの違いについて分かりやすく解説していきます。
同じSEという職種ですが、上流工程と下流工程では全然やっていることが違いますね。
目次
システム開発の中での役割で決まる
SEのシステム開発は流れがだいたい決まっています。ウォーターフローモデルという言葉を耳にしたことがある方も多いかと思いますが、簡単に紹介すると、
- お客様とどういうシステムを作るかのすり合わせ(要件定義)
- システムを作るための設計書の作成(設計)
- プログラミング(開発)
- ミスなく正しく動くかの確認(テスト)
- お客様にシステムのお渡し(納品)
※ カッコの中身はSE同士で一般的に使われている専門用語です。
1 ~ 5 までの流れを頭から順番に実施していくことで、システムは開発されていきます。このシステム開発のモデルをウォーターフォールモデルというのですが、この中のどの番号を担当するかで「上流」と「下流」が分かれます。
上流は最初の方の工程、下流は後の方の工程
具体的に上流工程と下流工程は以下のとおりです。要件定義と設計が「上流工程」、開発とテストが「下流工程」という分けられ方がされています。
上流工程は、お客様とすり合わせや設計書の作成といったシステム開発の最初の方の工程を指します。
下流工程は、設計図ができた後の、プログラミングであったり、テストといったシステム開発の後の方の工程です。
上流は指示者、下流は作業者
システム開発の流れの中の先と後の違いの他に、担当する役割から立場も異なります(どちらが上とかという話ではありません。)
上流工程では、お客様とのヒアリングであったり、システムの完成系を設計書という形で作成する役割があります。最終的にどういったシステムが出来上がるかは、上流工程の人たちの手によって決まるわけです。お客様の要望にただ応えるだけでなく、予算やスケジュールといったことも頭に入れながら調整していくといった仕事になりますので、頭の痛い仕事でもあります。
そうやってできあがったシステムの設計図を元に、下流工程を担当する人に指示を出して開発をお願いしていく流れになります。
一歩の下流工程では、基本的には、上流工程でできあがった設計書を元にプログラムを組んで作成していくのが仕事です。一日中、パソコンの前に座って作業し続けるなんて日が多かったりします。
多くの人と接することが好きだったり、自分の手でシステムを生み出した実感を得たいならば、上流工程が向いていますし、
あまり人と会話せずに、パソコンに向かって仕事がしたいという人は、下流工程が向いています。
上流と下流の違いを市場や給料、待遇から比較
世の中の9割は下流SEと言われている
上流と下流ってシステム開発の流れだけ見たら、半々くらいに分かれそうな気がしますが、実態としては上流1割、下流9割といった現状です。
世間一般にイメージされるSE像がパソコンの前でカタカタしている様子なのは、下流工程で仕事をするSEが圧倒的に多いからです。
上流はシステム開発の中でもお客様との調整や、設計図通り進んでいるかなどを見届ける管理側の立場となるため、人数としては少なくなります。(実際は足りていない現状がありますが。)
上流工程の方が給料が高い
これまでの説明でなんとなく想像できるかと思いますが、上流工程に携わっている人の方が下流工程より給料はもらっています。
理由は明白で、誰にでもできる仕事ではなく、かつより責任感を持って仕事しないといけないからです。
下流工程の会社に勤めている人は上流工程の会社に転職したいと思う人が多いです。しかし、激務であることや、加えて責任持ってプロジェクトを推進していくというプレッシャーは大きくなります。人とのコミュニケーションも増えますし、お客様と下流工程のメンバーの板挟みになりながら、システムを作りあげていかなければなりません。
転職を考えている人は、給料だけでなく仕事内容の大きな変化も考えて、下流のままがいいか、上流に進むべきか考えるといいでしょう。
ホワイトカラーの企業が多い上流工程
下流工程の人は上流工程でできたスケジュールや設計書を元にひたすらにプログラムを作成していきます。案件が重なればきつくなりますし、基本的には断りづらい立場にいることが多いので仕事量はどんどん増えて残業もでてくることでしょう・・・。
一方で、上流工程の立場では、お客様との調整が可能です。そこには交渉やコミュニケーションの能力も必要がなのですが、開発スピードを選べる立場にあります。
時間をコントロールできる企業はホワイトカラーが多いです。
そもそも上流やってる会社に大企業が多いっていうのもありますが・・・。当然、福利厚生もしっかりしてます。
SEのステップアップは下流から上流へ
SE職のいいところの一つにキャリアプランが明確である点が挙げられます。
上司や先輩を見ていると、○歳にはこの辺のポジションにつけるんだろなとイメージできるわけです。
流れとしてはだいたい以下の通りです。
- 下流工程(プログラマー)
- 上流工程
- プロジェクトリーダー
- プロジェクトマネージャー
下流工程のプログラミングなどを経験して上流工程へ。そして管理職へと移っていきます。
ちなみに、下流工程を飛ばして上流の会社からSEを始める人もいたりします。こういう人たちがプログラミングのできないSEです。なので、コードが読めないSEもいたりするので、一口にSEと言っても求められるスキルがいかに多様化してるかが分かるはずです。
理想は下流も上流もできる会社
SEとして会社を選びでは、理想は上流工程も下流工程も自社で経験できる会社です。
新人の頃は、下流工程で経験を詰み、機が熟したら上流工程に入り、その後も順調にステップアップしていく、といったキャリアプランを自社で勤め上げることができあるからですね。
ただ、SE企業の実態として、そういった会社は全体の1割しかありません。新卒ブランドを使えば入れたりしますが、実務経験のない未経験者が転職でいきなり上流もできる会社に入ることは難しいでしょう。
理想は、全部できる会社ですが、現実的には下流の会社で経験をつみ、良きタイミングで上流工程もできる会社にステップアップ転職していくという流れが自然かと思います。
まとめ
同じSEという職種ですが、上流工程と下流工程では全然やっていることが違います。
- 設計やスケジュールを作成するのが、上流工程
- プログラミングやテストをするのが、下流工程
プログラミングしてる姿の下流工程こそがSEと思っている方も多いと思いますが、SEの中でステップアップしていこうと思ったら下流から上流に行く必要があります。あえて、移らずにプロフェッショナルなプログラマーになるのもありです。(ただし日本でサラリーマンとして働くのであれば素直に上流工程のスキルを手にいれた方がお給料もらえます。フリーランスなどは別)
未経験からSEを目指す場合は、下流でプログラミング経験をつみ上流工程を目指しましょう。