##はじめに
人間はなんでも一人でできるわけではないのでチームや組織が必要です。
しかし、システム開発に関しては2人で作るというのが一番なのではないかと思います。
##前提
スタートアップの言うところのMVPを作成するようなシステム開発を前提しております。
※そもそも半年要件定義をして半年かけて作って、半年かけてテストをするといった事自体に、私は疑問を持っています。
##理由
・無駄なコミュニケーションコストがかからない
・バグや実装の仕方がわからなかった場合はペアプログラミングできる
・設計やテーブル作成に何人も必要ない(設計を7~8人でやるとか意味不明)
##システム開発のステップ
#####1.要件定義(お客様ヒアリング)
#####2.ユースケース図&画面一覧の作成(場合によっては業務フロー)
#####3.機能一覧の作成
#####4.ファンクション一覧の作成
#####5.データモデルの作成
#####6.開発環境準備&本番環境準備
#####7.DB作成(自動でできるようなフレームワークを選ぶべき)
#####8.ファンクションの実装
#####9.単体テストの実施
#####10.画面の実装
#####11.繋ぎ込み
#####12.結合テスト
#####13.総合テスト(お客様確認)
#####14.デプロイ
#####15.追加開発の検討&実施
##詳細スケジュール
【Day1】
2人でお客さんへのヒアリングに行く。
【Day2】
一人がお客様ヒアリング内容をまとめながら疑問点を洗い出し、もう一人がユースケース図&画面一覧を作成。
【Day3】
一人がユースケース図&画面一覧とQA表を持ってお客様のところへ行く。
もう一人が、開発環境の準備(使うフレームワークの選定やインフラ構築)を実施。
【Day4】
一人がDay3まででfixさせた要件定義を元に機能一覧を作成。
もう一人は開発環境の準備で苦しむ。
【Day5】
2人で機能一覧を元にファンクション一覧を作成。
この時に2人の設計に対する認識を合わせる。
【Day6】
一人がデータモデルを考えながら、もう一人はファンクション一覧の詳細設計を行う。
【Day7】
一人がDBを作成、もう一人(開発環境を作っていない方)が開発環境の準備をする。
(あんまり時間かからないはず)
【Day8】
分担してとにかくファンクションを作る
【Day9】
一人が主要機能の単体テストしつつ、もう一人は画面を作成。
※この際の画面は荒くていい(絶対変わるため)
【Day10】
2人でつなぎ込みを実施。
【Day11】
2人で結合テストを実施。
【Day12】
2人で総合テストを実施。
【Day13】
1人が総合テスト(お客様への説明)を実施。
もうひとりは、細かい画面の体裁の修正もしくは機能追加の検討。
【Day14】
一人が本番稼働。
もう一人は追加開発の資料作成。
追加開発という名の要件定義のスタート。
【Day1】に戻る。
※Dayは必ずしも24時間を表さない。ある一定期間である。
##重要ポイント
☆画面から作らない
☆とにかく早く開発環境を作る
☆完璧な画面を初めから目指さない(絶対変わるため)
☆追加開発がある前提、こちらから提案する前提で開発を行う。
##あとがき
この2人に加えて、
金引っ張ってこれて意思決定できてドキュメントかけるCEO的な人と、
LPとかビラとかぱっとデザインできるデザイナーがいれば4人でスタートアップできるなと思った。