はじめに
現役でシステム開発をされている方には不要な情報です。
ソフトウエア開発業界を志望する就活生で「上流工程」と「プロジェクトマネジメント」をなぜか混同して面接に臨む方がいます。
下流工程(特にコーディング)に苦手意識がある文系出身者に多いかもしれません。
当たり前のことですが「上流工程」と「プロジェクトマネジメント」は違います。
「上流工程」とは
最近はアジャイル開発が主流なので、上流工程という言葉自体が業界内では聞かれなくなっています。
基本的に工程を上流、下流で分けるのはウォーターフォール開発です。
個人的にはV字モデルの「基本設計、結合テスト」までが上流かなと感じます。
アジャイル開発では、基本的な要件からテストコードを書いていくと思うので、テストコードを書くのは下流でしょう。
一般的にアジャイル開発では同じ開発者がイテレーション(スプリント)内で設計からコーディング、テストまで実施するので工程で担当を分けることは少ないと感じます。
「上流工程」は「下流工程」より偉いのか
上流が下流より偉いとかありませんが、実際のウォーターフォール開発現場では 上流偉い という空気感があります(私だけ?)。
ウォーターフォール開発では上流工程の設計書が下流工程の作業指示書の様なモノで、上流工程担当者の指示に従って下流工程担当者は仕事するというプロセスが上司から部下への指示命令の様に見えるからでしょう。
「上流工程」担当者に、「下流工程」のスキルは必要か
必要だと考えます。実装できない設計者が設計すると、無理や無駄のある設計になります。ウォーターフォールでは設計書に従って実装するため、クソ設計だと、下流工程の担当者が苦しみます。
「プロジェクトマネジメント」とは
ウォーターフォール開発では、プロジェクトマネジメントが非常に重要です。リーダーは計画を立案し、実行させ、監視し、見直すサイクルをプロジェクトの開始時から、リリースまで継続する必要があります。プロジェクトリーダーのスタンスは「開発者を管理する」ことです。
アジャイル開発における、プロジェクトマネジメントはスクラムマスターの仕事でこちらも非常に重要です。スクラムマスターのスタンスは「開発者を支援する」でしょう。
さいごに
近い将来、プロジェクトマネジメントの仕事は大部分がAIに代替されるでしょう。
ただ、プロジェクトは基本的に計画通りに進まないものです。メンバーのメンタルをケアする、納期変更や機能削減、追加費用を顧客と交渉するといった場面で(人間の)プロジェクトリーダーが活躍するケースは変わらないと考えられます。