アジャイルサムライを読んだ
- 作者: Jonathan Rasmusson
- 出版社/メーカー: オーム社
- 発売日: 2014/06/25
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
感想
・読みやすい!
目次
・これは今まで思っていたことと違うなあ、という部分をかいつまんで紹介する
第I部「アジャイル」入門
第III部 アジャイルな計画づくり
第6章 ユーザーストーリーを集める
・変化に対応できないドキュメントなんて作らねえよ!そのためのユーザストーリーや!
第7章 見積り:当てずっぽうの奥義
・進捗はユーザストーリーの消化具合と、作業したタスクとの比較で求める
第IV部 アジャイルなプロジェクト運営
第9章 イテレーションの運営: 実現させる
第10章 アジャイルな意思疎通の作戦
第11章 現場の状況を目に見えるようにする
・9〜11章アジャイルな開発を運営する場合のサンプルケース、必読
第V部 アジャイルなプログラミング
第12章 ユニットテスト:動くことがわかる
・ユニットテストの運用の仕方、大切さを説く。
・やっぱりイテレーション型の開発でないとユニットテストは有用ではないのかなあ…
ユニットテストの利点を抜粋
・素早いフィードバックが得られる
・極めて低コストにリグレッションテストを実行できる
・デバッグ時間を大幅に削減できる
・自信を持ってデプロイ出来る
第13章 リファクタリング:技術的負債の返済
・プロダクト or プロジェクトマネージャーへ
「早い目に古いコード&フレームワークを片付けないとソフトウェアが腐って更新できなくなるよ」
→ 腐ったコードは複雑性が上がる、複雑性が上がると修正難度が上がる、修正難度は指数関数的に上がる→動かない
・プログラマーへ
「普段からリファクタリングしないで後からまとめてやると進捗0になるから激おこプンプン丸になるよ」
→ まとめてリファクタリングするぜ
→ 機能追加してるわけじゃないのにどんだけ時間使ってるんや
→ (アカン)
第15章 継続的インテグレーション:リリースに備える
・常在戦場の精神
今までの自身の経験と比較してみる
・開発項目を大雑把に見積もった場合、タスクが大きくなるほど見積もりの時間が不正確になることは経験上私もよく理解している。アジャイル開発では、そもそものその過ちを犯さないようなルールで作業を行う。
・ユーザストーリーごとに作業を分割することで要件と実装を二項対立させている、なるほど上手い手法である。仮にエンジニア側がタスクを細かくした場合、おそらく機能単位で分割され非効率だ。
・かつてSIerだったときユニットテストの有用性について話しても大抵あまり同意はされなかった。それは最終的にテストコードを書いたら工数がかかるという意見に収斂された。いくら有用性があっても時間的なコストがかかると。それはたぶんテストコード書く前提の開発スタイル(イテレーション)ではないから。なおかつユニットテストを通せるコードをかける人が少ないことにつきると今思う。*4
*1:生物でいうところの相同に似ている。 相同 - Wikipedia 、見た目は似てるが根っこは違う
*2:私は要件定義したことなし
*3:このへん人月の神話案件ですね
*4:mockを使ったコーディングはJavaでもPythonでもちょっと難しいし、きちんとクラスとメソッドを分割してコーディングするのは一山いくらの労働者では無理だ。ユニットテストをよく理解しないままコードを書いてもバグはとれないし死ぬしでいいことがない。じゃあ、言語の複雑性を排して、ユニットテスト止めて人海戦術で開発…有る意味それも正解かもしれないが永久に終わらないサグラダファミリアの出来上がりを予感させる。なぜか?ユニットテスト時点ではソースコードの複雑性は最小まで分解されているため、そこでバグを修正して結合すれば修正難度は高くない。ユニットテストをせず、結合後に人海戦術でバグを見つけると、ソースコードの複雑性は増しているので修正難度は高くなる。でも見た目のコストは低い、炎上するまでは、炎上したらお金がかかるから誰でも失敗だとわかる。