web-dev-qa-db-ja.com

XPのベストプラクティスは何ですか?

「Extreme Programming Explained」では、ベックは13の「主要なプラクティス」をリストしています。彼らです:

  • 一緒に座る
  • チーム全員
  • 有益なワークスペース
  • 精力的な仕事
  • ペアプログラミング
  • ストーリー
  • 毎週のサイクル
  • 四半期サイクル
  • スラック
  • 10分のビルド
  • 継続的インテグレーション
  • テストファーストプログラミング
  • インクリメンタルデザイン

これらのうち、実際に職場で実装したのはどれですか?どれが最も便利でしたか?

3
Craig Schwarze

使った

  • 一緒に座る
  • ストーリー
  • 毎週のサイクル
  • 有益なワークスペース
  • 10分のビルド
  • 継続的インテグレーション
  • テストファーストプログラミング
  • インクリメンタルデザイン

そしてそれは本当に成功しました。

  • ペアプログラミングがうまくいかなかった(チームは最初は少し小さかったので、時間の経過とともにペアに向かっていった)
  • チーム全体が何度か行ったことがありますが、顧客は常に対応できるとは限りませんでした。私は練習で偽の顧客に変身しました。
  • Slackは経営陣と一緒に飛ぶことができず、代わりにイベントベースのスケジュールを行いました。
  • 精力的な仕事は困難でした。より長い時間の文化がありました。
2
Tim Williscroft

ベストの練習があるとは思いません。そのリストにはTest-First ProgrammingContinuous Integrationのような多くの優れた実践があります。

私の投票はContinuous Integrationです。 Joel Spolsky も彼の Joel Test でそれについて語っています。

チームは一緒に座ったりペアプログラミングをしたりせずに素晴らしい結果が得られると思いますが、多くの場合、作業を統合することが非常に重要です。すべてのプログラマーが更新されたバージョンを使用し、チームが作業を統合するのが早ければ早いほど、マージの競合を解決し、テスト時に統合エラーを検出するのが容易になります。

Continuous Integrationの詳細については、 この記事Martin Fowler を参照してください。

3
Oscar Mederos

個人的には、次のようにして生産性の向上を見てきました。

  • 継続的インテグレーション(Hudson/TeamCity)
  • インクリメンタルデザイン
  • 反復サイクル(2週間が最適のようです)
  • ペアプログラミング(継続的なピアレビュー)
  • ユニットテスト/優れたテストカバレッジ(必ずしもテストファーストではない)
  • 残業なし/メンテナンス可能な作業サイクル。

もちろん、物事を改善できる他のものが常にミックスにあります。

  • 高品質のバグ追跡ソフトウェア(CIおよびSCMと緊密に統合)
  • 優れたSCM(svnまたはgitは個人的な推奨事項)+機能の分岐、バージョンのメンテナンスなどのための明確なSCM戦略.

一般的にこれらの最後の2つは、方法論に関係なく適切に配置する必要があります。CIも同様に適切に配置する必要があると思います。CIを使用しない適切な理由はありません。

2
ocodo

最高のXPプラクティスはありません。

一般に、これらのプラクティスのいくつかはそれ自体で役立つ場合がありますが、実際にはそれらを組み合わせて使用​​すると効果があると思います。

プラクティスはいつでも置き換えたり変更したりできますが、XPには一連のプラクティスがあり、それぞれが役割を果たすことに注意してください。

多分あなたは次のような質問をすることができます:

1つまたは2つのプラクティスのみを実装する必要がある場合、どのプラクティスから最もメリットがありますか?

そして、答えは明らかになります。

デザイン/バグ/その他のコードベースに問題がある場合は、テスト駆動開発などの恩恵を受ける可能性があります...

2
FabianB