2021/02/19 ペアプロでTDDを体験したメモと感想
フィヨルド卒業生のライム(lime1024)さん達とペアプロしてTDDを布教してもらった時のメモや感想
課題
自分がドライバー、先輩方がナビゲーターとして都度教えて貰いながら自動販売機の課題を実装した。
TDDポイント
実装コードよりまずテストを先に書くことを徹底する
書いたらまず実行
テストを回して行ってリズムをつける
yana-gi.iconテスト書く前につい実装コード触ってしまいがち……
赤から緑の感覚を何より短くする
赤の状態からいろいろ考える前にまず実装して緑にする
緑にしてからリファクタリングする
コードを一つ足したらテストを実行してエラーコードが変わることを確認する
とにかくテストを回す
一度にいろいろやらない
エラーコードと対話する
テストを実行する前にエラーメッセージが予測できるようになるとプログラムと通じ合えた気持ちになる
とにかく今はそのTodoだけを考える
後に出てくる仕様のことは考えない
命名をどうするか、クラスを作るか、みたいなことは必要になってから・気になってからでいい
TDD以外で分かったこと
assertはbooleanのtrueを返したらテストが通るのではなく、オブジェクトが存在した場合通る
yana-gi.iconbooleanのtrueかと思ってた
require と require_relative
requireは実行するディレクトリから見た相対パス
require_relativeはどのファイルから見た相対パス
require_relativeの方がどのディレクトリで実行しても同じ結果になるので使いやすい
yana-gi.icon感想(すごく雑記)
以前フィヨルドのメンターから「テストファーストを頭ではなく心で「理解する」瞬間があるよ」と言われたり、他でも同じような言及をしている人を見かけた
自分は「テストを最初に書くってこと以上に解ることって何……?」と疑問に思っていた
自己流にやった時と比べて今回ペアプロでやってみて、テストを実行するリズムみたいなものを感じられた。完全にではないにせよ身体や心で理解できた気がする
今回TDDの触りを実感できた程度で、自分が習得するとなるとまだ時間がかかりそう
最初にテストを書くことはまだ慣れないだろうし、テストに関係ないコードをいじってしまうと思う
慣れるまで苦痛に感じるだろうけど習得できたら絶対に楽しい
今回の場合Todoが用意されているけど、自分でTDDを回す場合どうTodoを作るかが課題になる
コードを書く時って基本的に1人だけど、TDDで進めるとテストやエラーコードと対話するので1人じゃない感覚がある
テストを実行するたびに赤だよ〜緑だよ〜と教えてくれるのは気持ちがいい
今回ナビゲーターの方がオーディエンスになってくれたのもあって、テストが通るたびに・コード書くたびにいいですねえ〜!と褒めてくれてなおさら気分がよかった
コード書いてたら褒めてくれる存在、いつもいて欲しいな……
TDD、普段エラーを潰した時や仕様通りに動く喜びを最大限効率的に感じられる仕組みだ
自分がコード書くのが好きな理由、「動いて嬉し〜!」「エラー解消できて偉いわ〜!」みたいな楽しさがすべてなので、それを存分に味わえるならやらない手はない
楽しさに貪欲でいたいね……
ペアプロ楽しい
自分の書いたコードがすぐにリアクション(レビュー)が返ってくるのありがたい
ペアプロに対して全然コード書けなかったらどうしよう、変なこと言ってしまったらどうしようという恐怖感がずっとあったけど今回ナビゲーターの方達が優しかったので杞憂だった
人とコーディングするの楽しい
自分が一つしか考えられなかったコードの書き方も人によって違う書き方・考え方があることを知れる
ジュースの管理一つとってもいろいろな考え方があって面白かった
ライムさんの問題を通して自動販売機について考えるようになったという話
問題に書かれている仕様から書かれていないことをどう定義するか・どこまで詰めるか
今回に限らずドメイン(サービス)の理解って大事だよね、ということにもつながる
与えられた課題・求められる機能から仕様をどうするか、どこまで突き詰めるか考えるのって今回の自動販売機の問題に限らず現場でも大事だな〜
ライムさんのTDDはいいぞ!という気持ちやパッションがこれ以上ないくらい伝わってきた
TDDの話に限らずに好きなものの話を聞くとこちらも嬉しい気持ちになる
今まで「好きなもの」ってコンテンツとか作品の範囲だけだと思っていたけど、これって技術の世界でも言えることだ
自分がずっと生きがいにしてきたようなコンテンツを好きになること・好きなものを話すこと・聞くことって技術の世界でもできるんだな
1月のミートアップで角谷さんが「OSS活動は推しを探すといい」という話をされていて、そこでも同じようなことを思った
フィヨルドに入ってからプログラミング楽しい!動くの面白い!仕組みを知るのわくわくする!と思える機会が何度もあったのに、どこかでスキルとか仕事で使うものみたいな見方をして「自分が好きなものがある世界」というフィールドから外してしまっていた。もったいない
テスト好きですって言えるようになりたい