Microsoftに勤めている人との会話をまとめたものです。Googleの開発手法は最近カンファレンスなどでよく聞きますが、Microsoftでどのように開発を行っているのかはあまり知られていない気がします。
まず、コードレビューをかなり重要視しているようです。コードと単体テストが終わったら旧ソースとのDiffをチームメンバーに配り、メールベースでレビューを行います。レビューは1行1行細かく行い、全員がOKと判断したら再度テストを行いチェックインします。コードレビューはチーム全員で行うため、チームの能力が徐々に平均化していく効果があるようです。なおバグが出た場合、チーム全員でレビューしていることから「チーム全員に対する説明責任」が生まれ、なぜバグが出たかを全員が納得するまで説明しないといけないようです。
スケジュール管理に関しても独特な部分があります。プログラマは、コードを書く時間を1日最低4時間は確保しなければいけないようです。そしてそのほかはレビューやコミュニケーションに費やされます。また、プログラマは実装する機能一覧を見て、自分で一つ一つ時間単位で見積りを行います。それらを積み上げたものがスケジュールとなり、どんどん消化していくことになるのでグラフは右肩下がりになります。たいていは納期ぎりぎりでグラフの減少幅が小さくなってしまい、最後は不要な機能を削って工数を減らし、納期に合わせてリリースすることが多いとのことで、この辺は非常に現実味を感じます。しかし、過去2年で納期遅延を起こしたことは一度もないらしく、「重要な機能から優先して取りかかる」というルールがあれば非常に有用なのかもしれません。
このように、Microsoftは非常に洗練された開発手法を取り入れていることがわかります。また一方で、モダンなエッセンスも感じられます。たとえば、Diffをメールベースでレビューし、OKが出たらチェックインするという方法はGoogleとまったく同じです。また、レビューによってチームの能力が平均化する効果は、XPのペアプログラミングと同じです。さらに、プロジェクト進捗のグラフが右肩下がりになるというのはバーンダウンチャートを思い起こさせます。
ちょっと意外なところでは、ソースコード管理にVSS(Visual SourceSafe)ではなくCVSを使っていたり、工数管理をMS Project(Microsoft Office Project)ではなくExcelでやっていたりするのは、少し微笑ましく思います。
URL:http://masakano.com/archives/51554921.html