設計の良し悪しの指標が変化
Before
1. 設計に対する良し悪しの判断が自己満足の域を出なかった
2. 悪い設計に気付くことなく、未来の誰かが損をしていた
(過去の自分を殴りたい・・・)
After
自分が書いたコードが良い設計なのか悪い設計なのか判断するとき、テスタビリティ (テスト容易
性)という指標が生まれた
Slide 8
Slide 8 text
テスタビリティが何故指標として役立つのか
1. テスタビリティが低い場合、様々な課題があることに気付いた
a. 独立性が低い
b. 密結合になりやすい
c. 責務がバラけがち
2. 設計を議論する時に、テスタビリティの観点で話すことが出来る
3. テストがやり難いと感じたとき、設計を見直すことのできるチャンスだと捉えることができる
Slide 9
Slide 9 text
しくじりに「気づく」タイミングの変化
Before
書いたコードが実際使われる段階になってはじめてしくじっていることに気づく
完璧だな 実装するぞ しくじった…
テストコードに対する価値観の変化
Before
・「実装したコードが100%で意図した通りに正しく動くならば
テストコードがいらないのでは?」
・「実装コードと、そのテストがあればいいよね」
After
1. テスト→実装→テストのサイクルだと、実装はテストをグリーンにするために存在
2. テストは、実装内容についてだけでなく、仕様 (要件)を満たしているかの確認のために存在
3. 意図しないグリーンなテストは実装が間違ってしまっている可能性もある
テストの地位が明らかに上がった
Slide 22
Slide 22 text
ちょっとしたコードの書き方の変化
Before
個人で新しい言語を勉強しているとき、こんな書き方できるかなみたいな確認をするとき、実装か
ら始めていた。
After
上記のようなケースでも、まず検証するコード(当然落ちる)から書くようになった。
なぜAfterになったか
どういうことをさせたい、どうなっていてほしいのか、どう使えると嬉しいのかをコード上で明確にし
てからの方がやりやすいと感じるようになったため。
Slide 23
Slide 23 text
プログラミング以外の変化
Slide 24
Slide 24 text
仕事の進め方の変化
Before
すべてやりきるところまで一気に進めていた。失敗には最後になってから気づいていた。
After
全体のゴールは考えつつ、小さなゴールを定めて進めることが多くなった。
プロジェクトでも、小さく一つだけ実施してフィードバックを得て、徐々に育てるようになった。
なぜAfterになったか
大概のことは想定通り進まず、実際にやってみるまで不確定な要素が多い。
そういう場合では、フィードバックループは早い方がいいことが多いと考えるようになったため。