Advent Calendar 2日目 社内勉強会開催

「開発者テスト 事始め」というテーマで、昨日、社内勉強会を開催しました。

テストコードを書くのは自分だけ

社内で書かれたコードに対して、何一つテストコードが無かった3年前。

テストコードはあっても、継続的には実行されてなかった1年前。

今では、Jenkins による自動テストが行われ、テストに失敗したら通知される仕組みが出来ました。


しかし、とても重大な欠陥がありました。

社内でテストコードを書く人間が自分以外にいないのです。 *1


最初はこう思ってました。

「仕組みさえあれば、自然とテストコードを書く習慣が生まれるだろう」

んなことはない。

動くものが出来たならば、それ以上のなにかをしようだなんて、誰も思わないみたいです。


一人だけテストコードを書いていても、レガシーコードは日々増えていく。


テストのないプロダクションコードはテストをしにくい設計になっていることがが多く、テストコードを書くのが大変になります。

既存システムに手を入れるためにテストコードを書きたいのに、そのテストコードを書くためには手を入れる必要がある。
レガシーコードのジレンマ*2 というヤツですね。


でもそこまでしている時間とスキルが足りず、結局レガシーコードのまま対応せざるを得なくなる。
そんなことが間々あります。切ないものですね。

布教開始

そんなわけで、テストコードを書く人が増えるように、布教活動を始めました。

その第一歩が、今回の勉強会です。

TDD とか、アジャイルとか、そういうバズになりそうな言葉は一切使わないと、決めていました。(一度、TDD についてもアジャイルについても説明して失敗したことがあるので)

なので、実際にあったこと、あり得ることを中心にしつつ、実際に簡単なテストコードを提示して、開発者テストがどういうものなのかを解説しました。

今からテストコードを書くために何を準備すればいいのかなども説明には入れませんでした。
というのは、テストコードがあることの安心感を想像できたなら、具体的な説明をしなくとも書き始めてくれるんじゃないかなぁという淡い希望にすがったからです。

自分自身、今のテストコードの書き方が適切なのか確信を持てていません。できるなら、「自分が教えて周りがやる」のではなく皆が自分なりのテストコードの書き方を見つけて共有したい。
そんな望みを持っているのですが、今振り返って思うと、ちと無謀かもなぁとも。

今後の予定と社内勉強会

もともと一回ですべて伝えることはできないと思ってましたので、「開発者テスト」に関する社内勉強会は継続してやっていきたいと思います。
具体的な計画はないのですが……。(うーん行き当たりばったり)

テストコードを書く風土を植え付けるというのはもちろん、社内勉強会を定期的に開催するという習慣も作っていきたいと考えています。

そのために、開催のコストを抑えて行かなくては。

あと、もっと軽い雰囲気の勉強会にしていきたいなぁ。なんて。

KPT

Keep:
  • 時間をきっかり決めて、だらだらと続けるようなことはしなかった
  • 最後にまとめてではなく、説明のまとまりごとに都度質問がないか確認した
Problem:
  • 上手く伝わったか分からない
  • 終わりがまとまっていない
  • 空気が堅かった
Try
  • 終了後にKPTを書いてもらう
  • はじめにゴールを共有する

*1:正確に言えば、他にも書いてくれる人は1人居ますが、継続的に広げていこうとしているのは自分だけです

*2:レガシーコード改善ガイド p19