SEとPG vs プログラマ2人
階段状になってるスケジュールをぼーっと見てたら、このネタを思い付いた。
前提
- SE: 設計はするが、コードは書かない人。
- PG: コード(だけ)を書く人。
- プログラマ: 設計も実装もする人
- 既に稼働中のシステムがあり、変更案件やバグが課題として一覧管理されている。
- あるリリース(xxリリースとする)では、変更Aと、バグBの課題を改修し、リリースしようとしている。
- 各課題に対しては、設計/実装/テストの作業が必要である。(レビューとか、リリース作業とかは省略)
- 各作業に対しては、1週間かかるという見積りが出ているとする。
お題
このときのスケジュールを書け。
SEとPGが1人ずついる場合
- 工程ごとに分担するので、中項目は工程になる。(垂直分割)
- PGは、SEの設計が終わらないと何も出来ないので、1週間アイドル状態になる。
- SEは、PGが誤解しないよう、細心の注意を払って設計書を書く必要がある。
プログラマが2人いる場合
※1つの課題を1人だけで担当すると品質に不安が出るため、テスト担当は入れ替えてます
- 課題ごとに分担するので、中項目は課題になる。(水平分割)
- 1週目から同時並行で作業を進められる。
- 設計者と実装者が同じのため、コミュニケーションロスが避けられる。
と、ここまで書いて
SEとPGで工程単位で分担するよりも、
プログラマが2人いて、課題単位で分担した方が効率いいよね。
っていう話。
で終わらせようと思ったのですが、
前者は、設計→実装にコミュニケーションロスが発生するケース
後者は、設計→テストケースにコミュニケーションロスが発生するケース
と捕えることもできる。
※もちろん、後者の場合において、設計/実装/テストを
全て同じ担当者に割り振ってしまえば、コミュニケーションロスは発生しないのだが、
担当者の思い込みやミスがあったときに、それをそのままリリースしてしまうという、
ことになってしまうので、上記のように担当者を入れ替えるか、
または、別途テストフェーズを設けるのが良いと思う。
じゃあ、なぜ設計と実装の切り離しはダメで、
設計とテストは切り離しOKなのか。
という疑問が沸いてくるので、そのうち考えようと思います。
参考
設計と実装の切り離しはダメ
プログラミングと設計は本来切り離せないものなのでは - 達人プログラマーを目指して
→技術検証(=プログラミング)を行わないと設計できない、というところから、
プログラミングと設計は本来切り離せない。という主張に読めました。同意です。
設計とテストは切り離しOK
世の中に、なぜQA(Quality Assurance)部門テスト専門部隊というものがあるのかを考えれば、
おのずと理解できるのかも知れません。