プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

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)部門テスト専門部隊というものがあるのかを考えれば、
おのずと理解できるのかも知れません。