シンプルにまとめると、上流は開発プロジェクトの全体をコントロールする管理の仕事、下流は実際に開発を手掛けるプログラミングの仕事を指します。
上流工程の場合、エンジニアといっても、実務に携わるのではなく、クライアントとのやりとり・交渉を担当したり、予定通りに仕事が進むようにスケジュール管理をするのが主な役割となります。開発に携わるプログラマーを管理するのも大きな役割の一つですね。
要は管理職です。下流は平社員で、ひたすら実務をこなすのが役割です。
・・・というのが一般的な回答となりますが、これが通用したのは数年前までです。今は、エンジニアの仕事も複雑になり、こんなふうに上流と下流をシンプルに分けることが難しくなってきました。
両者の垣根がなくなってきて、重なる部分が増えてきています。その一方、上流と下流で、昔から変わらない要素も存在します。
そこで、このページでは、上記の上流・下流に関する定義を前提にしつつ、プラスαで覚えておいたほうがいい最新事情をまとめてみます。
1:下流でも、上流工程のような仕事が出来る
これまでは下流=実務者で、上流の管理的な仕事には一切タッチ出来ませんでしたが、今ではプログラミングを担当するプログラマーでも、上流の業務に携わるケースが増えてきています。
たとえば、Web系の開発では、プログラマー(Web系だとアプリケーションエンジニアとも呼ばれています)が自分で設計しつつプログラミングすることが普通になってきています。webデザインが出来るようなエンジニアだと、全ての開発業務を自分1人でこなしてしまうこともあります。
これはWeb業界特有の自由さと言えます。そのため、IT業界のプログラマーでも、RubyやPHP、JavaScriptといったWeb開発言語を学んで、Web系へ転換したり、IT業界とWeb業界を掛け持ちして働く人が多くなっています。
2:上流と言いつつも下流の仕事しか出来ない会社もある
1の逆パターンで、上流と言いつつも、実は下流の仕事を押しつけられるだけというケースもあります。たとえば、下請けメインの会社だと、その会社の業務全体が下流となるので、上流工程の業務に携わることはありません。
名目的にSEと言われることがあっても、下流工程オンリーのプログラマーと変わらなかったりします。実際、下請け会社のSEというのは、発注元の御用聞きとなって、相手の要望をひたすら聞いて、自社のプログラマーに伝えるといった仕事に過ぎなかったりします。
SEということで入社したのに、事前に聞いていたことと実情のギャップに驚くといったケースも珍しくありません。これは、上流で働く適性がある人にとっては、実力が発揮できない会社で働くことになり、とても窮屈な思いをすることになります。
下流の仕事自体が悪いわけではないのですが、上流に関わりたい人にとっては、やりたいように仕事の提案ができなくて、言われるままに日々の仕事に追われるのは、ストレス以外の何者でもありません。
せっかくの能力を浪費することにもなるので、こういった状況に追い込まれないように、転職時には、その会社のことを事前にチェックするようにしましょう。企業のHPにある取引先や実績を確認すれば、下請けなのかどうか、すぐに判断することが出来ます。
3:下流と上流はつながっていない
下流で結果を残した優秀なプログラマーが上流にステップアップするというのが、これまでの一般的な傾向でした。プログラマーとしての実力をもとに、上流に上がれるかどうかが決まっていたということです。
ただし、今は優秀なプログラマーというだけでは、上流には上がれなくなってきました。そもそも、下流で求められる適正・能力と上流で求められる適正・能力は別物だからです。
上流というのは、プロジェクトリーダーであり管理者なので、何よりも重要なのは人をまとめあげる能力や関係する人間と適切に意思疎通を図ることが出来る能力です。
一言でいえばコミュニケーション能力です。これはプログラマーにとっては、最も苦手なことだったりします。人付き合いが苦手というプログラマーは非常に多いのですが、これでは上流の仕事をこなすことは出来ません。
2と逆のパターンで、上流の仕事に携わることが、大きな苦痛になってしまうこと間違いありません。こういった人は上流にこだわらず、下流に専念したほうが無難です。
このように、下流で優秀であることと、上流で優秀であることは、全く別物です。部下と技術的な会話が出来るだけの知識・スキルがあれば、プログラマーとしての実力は多少劣っているとしても、管理業務をこなすことは何ら支障がありません。
上流の役割をこなすうえで、下流での業務経験は有用ではありますが、下流で結果を出せたからといって、そのまま上流で通用することはないということを認識しておきましょう。
4:下流でも高収入を得ることが出来る
コミュニケーション能力というのは、持って生まれたものでもあるので、向いていない人は、どれだけ努力しても上流の仕事をこなすのは難しいというのが現実です。
こういった人は無理に上流にこだわるべきではありません。下流の仕事に専念するというのも立派な選択肢です。
昔は上流が上、下流が下といったヒエアルキーがありましたが、今はそんなことはありません。プログラミングを極めてWeb業界とIT業界どちらでも活躍できるスーパープログラマーが増えていますし、そういった人は上流よりも良い収入を得ているものです。(年収1000万超えのプログラマーも珍しくありません。)
上流、下流という言葉に迷わされないで、自分のできる仕事は何かとフォーカスを当ててみることです。自分の強みを徹底的に極めることが、ITエンジニアとして生き残っていく最良の手段です。
