様々なソフトウェア開発を経験してきた視点から、開発、マネジメント、経済などについて書いています。タイトルは、あるレトロゲームからのオマージュ。ツイッターアカウントはこちら。http://www.nakaba.siteHome自己紹介Twitter記事一覧このブログについてhttp://www.nakaba.siteソフトウェアの開発規模とチーム人数ソフトウェアは、開発規模が大きくなると生産性が落ちる。開発規模に応じて開発手法を変えていかなくてはいけない。前回の記事で、小規模プロジェクト、大規模プロジェクトという言葉を使っていましたが、これらの言葉に具体的な定義はありません。(^_^;)ソフトウェア開発で測定できるものソフトウェアは形がなく、開発規模の測定や予測は難しいです。何か定量的に測れるものがないと、開発規模の判断もできません。なくても測定できるので、上司にプロジェクトの説明をするときには便利です。会社によっては、共有が難しいデータかもしれません。正確に、そして自動的に測定できるのが魅力です。いう見積もり手法でも、コード行数が入力として使われています。トランザクション数、データ数ファンクションポイントという見積もり手法では、これらが入力として使われます。簡単に判断できる指標があります。それが、開発者の数です。地理的に分散しているか否かなど、影響を与える要因は他にもあります。私は経験上、これが一番簡単で確実だと思っています。』という本に掲載されているデータをグラフ化したものです。(他の書籍でも引用されている有名なデータです。「開発工数は投入した人数分上がるが、開発期間は短くなる」という期待通りの結果になっています。「開発期間はむしろ長くなり、開発工数は跳ね上がる」という結果になっています。私も経験上、7~8人が「チームとして最適に活動できる人数」の境界線だと思っています。これ以上に人数が増えると、チーム内で情報をうまく共有することができなくなってきます。すると、以下のような問題が増え、生産性が落ちてしまいます。負荷に偏りが生じたとき、「作業を手伝う」「引き継ぐ」などができなくなる情報の共有不足により、作業の重複、作業の手戻りなどが発生する最も簡単な対策は、チームを分割することです。その後は「チームで分業をし、チーム間で連携して開発をする」という開発スタイルになります。私は、これが小規模開発の終わりだと思います。「個人の能力のみに頼った開発」が終わり、チームリーダーを育てる必要が出てきます。大規模開発へ大規模開発になると、開発プロセスの成熟度、マネジメント能力がプロジェクトの成否を左右するようになり、管理ツールの導入などが必須になってきます。どれくらいの開発人数になると、その領域に突入するのでしょうか。私は、これも前述の「最適なチーム人数」がカギだと思います。チームを超えてくると、チームリーダーが全員優秀だったとしても、生産性が落ちてきます。(リーダ同士の連携が、効率的に行えなくなる。)こうなると、プロジェクトを分割して管理する必要がでてきます。この状態は、完全に大規模開発だと思います。この規模になると、技術的なリーダーシップだけでは開発が回らなくなってきます。プロジェクトをマネジメントする人が必須になります。「個人の能力に頼った開発」と「マネジメントによる開発」の間の規模です。非常に中途半端な規模で、どういった開発スタイルがよいのかは、プロジェクトごとに異なっていて、私も一概には判断できません。大事なことは、このときに「開発規模をこれ以上大きくするのか否か」を決めなくてはいけない、ということです。個人の能力を重視したいから、開発規模の増大を抑えるのか大規模な製品を作りたいので、体制を整え、マネージャを育てて準備をするのか一番よくないのは、ただ茫然と開発規模の肥大化を見過ごしてしまうことです。大規模開発に突入した時点で、プロジェクトは失敗することになります。大規模開発の失敗は、会社に致命的なダメージを残します。ソフトウェアを開発している会社は、開発規模の判断ができないといけないのです。記事を気に入っていただけた方は、クリックしていただけると励みになります。職業:元ソフトウェアエンジニア自己紹介:東京のゲーム会社でゲームプログラマ。家電メーカーで組み込みエンジニア。今は東京に戻って暮らしています。詳細な自己紹介は、こちら。