ソフトウェア開発には、上流下流などなく、戦術と戦略の2つがあるのでは、という話

僕はですね、かねてから、「上流工程」とか、「下流工程」という言葉をソフトウェア関連の文脈で耳にするたびに、眉間にシワを寄せていました。

それってちょっと違うんじゃないの?、と

例えばパン工場の業務を、上流工程、下流工程、と表現するのはわかりますけど、それと同じ表現をソフトウェア開発に適用していいのだろうか、と。

日本では、SIerという独自のガラパゴス的な概念が存在しています。SIerの存在が、上流・下流を分けることになった原因なのでは、という仮説が、僕にはあります。

上流、下流の何がダメって、まるで上流のほうが偉いかのように聞こえるからなんですよね。いやね、もちろんこれは僕の主観です。20歳かそこらで、いわゆる「下流」的な仕事をメインにこなしてきた若造ですよ。

設計とか、仕様策定とか、アーキテクチャを作る、みたいなことは、個人レベルでしか、本格的な経験はありません。だから、僕の意見というのは、ある種のルサンチマンといいますか、妬み嫉みがあることは認識しています。要はムカつくわけです。

しかし、僕の立場を割り引いて考えても、自分の主張が間違っているとは思わないです。だって、セブンペイ事件とか見てますからね。あれが「上流」と「下流」の分業の末路の気がしてなりません。

今どきの超巨大IT企業は、「上流」の人たちは皆、「下流」の仕事を経験してきています。ソフトウェアエンジニアのマネージャーなり、プロダクトマネージャーをやる人は、みんなコンピューターサイエンスのバックグラウンドを持っていますし、現場での経験も積みまくってきた人ばかりです。

そしてその結果はというと、GoogleとかAmazonの時価総額を見れば明らか。

だからですね、結論としては、「上流」、「下流」という言葉は物事を正しく表していないので、「戦略」、「戦術」と表現するべきなのでは、ということです。スポーツチームの監督が「上流」で、選手が「下流」と考える人はどこにいるでしょうか。

いませんよね。ソフトウェア開発というのも同様でして、「上流」が偉いわけではなくて、「戦略」と「戦術」を担う人が違うだけなんですよね。

そんな感じ。以上!