@m_seki の

I like ruby tooから引っ越し

テストの合間にプログラミングする

某所から再演依頼をいただいて単独シークレットライブ(re: 反復開発の再演の豪華なやつ)をやりました。とても楽しかったです。

その時に昔よく話してたフレーズを思い出しました。

「テストの合間にプログラミングする」

2009年にも言ってたみたい。というかずっと言ってたけど記録が残ってるのは珍しい。

kakutani.com

 

朝会以後から帰るまでの間、絶えず誰かが製品をテストする。プログラマは全員、毎日決まった時刻に1時間テストをする。さらに一日中テストするテスターがいて、プロの無職もほとんどの時間テストしてる。*1

テストすると問題(本当に問題かどうかはわからない。なにかがおかしい、疑問に感じること)に出会う。そうするとすぐにそばにいるプログラマやテスターやプロの無職がてきとうに集まってきて、なにが起きているのか理解して調査、修正のアクションが決まる。

プログラマの立場で見ると、毎日1時間はテストする帽子をかぶるし、それ以外の時間もだれかのテストで見つかった問題について時間を割くことになるので、(速い人ほど)多くの時間テストに関わっていることになる。んで、その隙をついて今日やろうと思ったチケットについてプログラミングする。計画立てるときもそういうことがあるのを前提にしてるので焦ったりしない。(見積もりにバッファを設ける、というんじゃなく、気兼ねなくリスケする、に近い)

チケット(ストーリー)もすべて製品上でテストすることに紐ついているので、チケットが増える = 毎日のテストが増える ようになる。チケット視点でもテストの合間にプログラミングって感じです。

こういう状況を指して、「テストの合間にプログラミング」って呼んでたわー。

異常な速さ

こんなやり方だとプログラミング進まないじゃん!遅そう!と思うかもしれないけど、実際には異常に速い。疑問に感じてから解消するまでの時間が短いのであらゆるところで待ち時間が短いからかな。プルリク送ってコードレビュー待ちですわーみたいなの、時が止まってるように感じちゃう。いつでも割り込まれるってことは、いつでも割り込めるということなんだよねー。

具体的な問題を前にするとほどほどちょうどいい設計が見つかりやすいのもお得な感じする。前払いでどんな状況でも対応できる設計にしときました!っていうやつもたいていハズれるけど、そいう気持ちのやつは「どんな状況でも対応できるようにしてあるはずだから、その状況がおかしい!現実の方を変えろ!」みたいな問答に時間を費やすので大損する率が高い。前払いしたとしてもどうせいま予見しなかった状況に遭遇するんだよねー、て思ってた方がいい。

速さの話はどうでもいいか。テストの合間にプログラミングするって話でした。

再演

再演はカネで買えます!JPYです!*2

 

*1:そうそう。自分たちにとってテストは「テストする」ものであって書くものではないのだが、ふつうはそうじゃないらしい。もし自動テストによって時間に余裕ができたなら、その時間を手動テストするのに使えるのでお得かもねー

*2:(50kで住民税払うと経費くらいです)