この記事は Agile459 retrospective for 2018 Advent Calendar 2018 のエントリーです。
XP本読書会の3回目は4章から5章あたりでした。
このあたりで思いつくのは人間性(Humanity)の達成感について。
以前、VBとかC#で業務用アプリを開発していた頃、設計書を読みながらプログラムを書き進めていたわけですが、リビジョン管理やTDDができていない頃で、ソースコード中にコメントを書いて、今日はこの辺までできてこのあたりが未実装とか、プロジェクトフォルダをzipに固めてファイル名に日付を入れてアーカイブとして残したりとか、よろしくない仕事の仕方でした。
そういうやり方だと、最終的にプログラムが完成するまで、ただただ不安な状況が続きます。「〇〇の機能ができていない」とか「△△はどうやって実装すれば…?」とか、そういうモヤモヤしたことがたくさんあるまま、中途半端な状態で切り上げて帰る日々。
完成に近づいて、一通りテストができる状態になって、やっとそういうモヤモヤした雰囲気から少し解放される感じです。なので、仕事の中で達成感を感じることがとても少ない状態でした。
それが、アジャイル開発を学ぶようになって、さらにTDDを経験することによってずいぶんと仕事の仕方が変わりました。比較的小さい単位で課題を設定して、テストコードを書いて実装して red -> green を繰り返す。課題が完了したら commit(push) して close して次の課題へ。
こういうサイクルで仕事ができるようになったので、greenにするとかcloseするタイミングで都度達成感を感じることができます。課題管理の中で、必要になりそうな技術資料などメモっておくこともできますし、テストコードを仕様書と思えば、ソースコード内に必要以上にコメントを書くこともありません。
もちろん、完成にたどり着くまでのプレッシャーとかストレス的なものは多少ありますが、それよりも従来と違って、日々の仕事の中でサイクルを回した分だけ小さな達成感を得ることができるので、気持ちよく仕事を終えることができますし、翌日のモチベーションにも繋がります。
さらに、テストコードで何がどこまでできているかがすぐにわかるので、翌日とか翌週とか時間をおいてもスムーズに作業を続けることができます。以前のやり方のままだったら、今頃どうなっていたんだろうと。おそらくコードを書くのは難しくて、他の仕事をしていたと思います。
とはいえ、まだまだ仕事の仕方について改善できることはいろいろあると思いますし、XP本を読んでいくらか理解できたとしても、実践はまだまだこれからです。なかなか自分だけでは実践までたどり着けないと思うので、コミュニティに参加しながらできることを進めていきたいと思います。