チーム開発について

TL;DR

チーム開発することで

  • 生産性(生み出した価値/コスト)を上げよう
  • 価値のあるものをいち早くリリースできるようにしよう
    • 同じクオリティで替えのきくものはコストの低いものに替えよう
    • 不要なものは削ろう

この記事の目的

なんでチーム開発するんだっけ?
チーム開発で何を目指すんだっけ?
などのチーム開発に対する考えを整理したく書きました。

個人・チーム関係なく必要なこと

個人・チーム関係なく開発者に求められるものとして
生産性が高いこと
があるはず。

生産性の定義

生産性という曖昧な言葉でなく厳密な定義を確認する

経済学で生産活動に対する生産要素(労働・資本など)の寄与度、あるいは、資源から付加価値を産み出す際の効率の程度のことを指す。 Wikipedia:生産性

寄与度 効率

とあることから生産した量は関係なく、どれだけの価値を出したかということになる。
つまり

生み出した価値 / コスト

ここでいう生み出した価値は最終的には売上ということになる。
その途中の要素としてユーザー満足や会員登録数などのKPIの事とも言えそう。

つまり、価値のあるものをどれだけ早くリリースできるかが重要になってくる。

生産性を上げる要素

早い安い美味いが基本だと思う

  • 早い(リードタイムが短い)
  • 安い(コストが低い)
  • 美味い(生み出す価値が高い)

早い(リードタイムが短い)

リリース(価値を届ける)までが早いこと

安い(コストが低い)

たぶん早いと同じ要素だと思う

美味い(生み出す価値が高い)

  • サービス関係
    • 機能追加、改善などのリリース
  • 技術関係(システムの品質)
    • バグ
    • セキュリティ
    • 可用性、保守性

チーム開発のメリット

個別作業するのに比べて生産性が向上する(はず)(だと思いたい)
重複するものもあるが以下のようなものが考えられる。

  • 色んな意見入って設計良くなる
  • ペアプロなどで開発効率や品質が上がる
  • コミュニケーションからの新しいアイデアが出る
  • システムの品質向上
  • リスクヘッジ
    • 属人化の排除

チーム開発の手法

チーム開発で生産性を上げる手法としていろいろある。

雑記:最強のチームとは?

sp.22a【ゲスト: kyon_mm】楽しい受託開発現場で作る「世界最高の開発チーム」で出てきた話

ソフトウェア工学の教科書にチームの名前が載る 歴史に名を残す

ここまで高い目標を持っていたら普段からいい仕事ができそう。
心に留めておきたい。