個人的なメモ

技術メモがメインです.本ブログはあくまで趣味です.

レガシーコードからの脱却 6章 プラクティス2 小さなバッチで作る

レガシーコードからの脱却 6章 プラクティス2 小さなバッチで作る

スクラムのプラクティスの1つにタイムボックスがある. タイムボックスに収めるために,開発者は大きな機能を小さなタスクに分割する必要が出てくる. 1つの機能やタスクではなく,複数の機能を同時に作って最後のリリースを目指すため,実際にやるのは難しい.

タスクのサイズが機能で小さいのであれば,スコープボックスを選ぶのが良い. 機能を小さなタスクに分割するのになれるまでは,タイムボックスを使うと良い.

分析,設計,コーディング,テスト,デプロイというバラバラの工程に分けてソフトウェアを作るのではなく,機能単位で作っていく. つまり数週間ごとに動いているシステムに機能を追加していくほうが,よほど単純でリスクも少ない.

ソフトウェア開発におけるトップチームの秘密の1つは,チームがとても小さいことである. 人間同士のやり取りに多くの時間がかかるためである.

下記の点から,小さいほうが良いと言える. 小さく分割するのが重要.

  • 理解しやすい
  • 見積もりやすい
  • 実装しやすい
  • テストしやすい

とある優秀な開発者はテストを20秒ごとに実行している. 良い開発者であるために取り入れると良い土台の1つだ.

ソフトウェア開発は精神的な負担の大きい職業で,40際を超えてくると以前よりスピードが落ちてくるのが一般的.

大事なものの一つとして,ビルドを高速化するというもんがある. 3秒以内に結果を返してくれるようなビルド環境を作るのが大切.

バックログ(作りたいと思っているストーリーのリスト)を作って残しておく. テーマごと,ユーザーの種類ごと,目的など自分に合う方法で整理すれば良い. リリースできるように機能を集めていく(最小市場可能機能セット:MMF)ことを行い,リリースで絶対必要なものを考える.

実践

ソフトウェア開発を計測する7つの戦略

  • 価値実現までの時間を計測する
  • コーディングに使った時間を計測する
  • 欠陥密度(コード1000行あたりのバグの数)を計測する
  • 欠陥検出までの時間を計測する
  • 機能ごとの顧客価値を計測する
  • 機能を提供しない場合のコストを計測する
  • フィードバックループの効率を計測する

ストーリーを分割する7つの戦略 ストーリーは短いほどよい.

  • 複数のことが混じったストーリーを要素に分解する
  • 複雑なストーリーを既知のことと道のことで分離する
  • 道のことをわかるまで繰り返す
  • 受け入れ基準をもとに分割する
  • 依存関係を最小にする
  • 意図を1つにする
  • ストーリーをテスト可能に保つ