y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

エクストリームプログラミング(XP:eXtreme Programming)

Web系(コンシューマ向けWebシステム)開発者の心がけを分かりやすく箇条書きした福音

従来、Web開発者は度重なる仕様変更、(根拠があいまいな)適当な見積もり、ユーザ都合の納期、混沌とした環境変化、運用したままの変更、終わりの無いバグ修正無間地獄、利益の捻出に悩まされていた。
彼らが”分かりやすく”、”希望に満ちた”メッセージになびきやすい状態に陥っていたとしても、誰も責めることは出来ない。分厚いプロジェクト管理手法の本も、細かく計画すれば大きなプロジェクトが上手くいくはずだと信じて疑わないマネージャも、そんな彼らの救いにはならない。

■XPの価値
1:「コミュニケーション」
エンジニア同士、エンジニアとサービス運営者間のコミュニケーションを重視する

→顧客もSEもプログラマも、誰一人として正解を持っていない以上、計画や論理ではなくコミュニケーションが仕様を明確化する(工業製品ではなく、情報サービスを提供しているのだ)

2:「シンプル」
必要最小限の設計しか行わない

→思い込みによる作りすぎで手戻りしたり、顧客すら意識していない(不必要な)部分の設計を詳細化してもしょうがない

3:「フィードバック」
推測をやめてテストでのフィードバック

→テストをテスト仕様書の計画通りに進めるだって?消化曲線だって?テストをしていく中で、更に新たな状態が発見され、それが大きな問題であることだってあるだろう?何が起こったかを素直に見る目が必要。

4:「勇気」
大きな仕様変更に立ち向かう勇気

→仕様変更なんて当たり前。元々ゴールだってあいまいだったんだから。それなら小さく作って変更に強い構造にしておこう。修正が他に影響しないような作り方(インタフェース、継承)をしようよ。誰でも修正できるようにしておけば、変更なんて怖くないよ。

■実践項目
1:「計画ゲーム」
次回リリースの機能を早急に計画
現実が計画と変わったら、計画を更新する「計画ゲーム」

→小さな部品単位で完結し
2:「小規模リリース」
次期バージョンを短いサイクルでリリースしていく「小規模リリース」

→短いサイクルでリリース
3:ペアプログラミング
すべてのコードは2人のプログラマにより一台のマシンで書かれる「ペアプログラミング

→生きた教育の実践、環境の共有、ノウハウの共有、保守引継ぎ対応
4:共同所有権
誰でも、どのコードでも、どこでも、いつでも、プログラマはコードを修正できる「共同所有権」

リファクタリング、常に改善
5:週40時間
週40時間以上仕事をしてはいけないルール「週40時間」
短距離走は生産性が低い。常に安定したパフォーマンスを!開発はマラソン