@kyon_mm 結局のところ、1) サイクルがあること、2) サイクルが重くなりにくいこと、が満たせるかどうかなんじゃないですかね。TDDは最も小さくて速いサイクルを実現するのに向いてる。
2020-02-25 09:54:34@wtnabe そのとおりです! で、なんというか、TDDだとあそんでつくっていくかんじがしないんですよね。。。
2020-02-25 10:01:55@wtnabe 重要なのはすばやいフィードバックで、テスト駆動という考えかただと、あそんでわちゃわちゃつくっているときのようなフィードバックループはまわっていない。。。
2020-02-25 10:02:49@kyon_mm @wtnabe あそんでわちゃわちゃ作るときは、TDDしないですね。単に動かしながら作る。動かすのにテスティングフレームワークを使うことはあるけど、できれば動いてる様子を直接見られる方法を使うほうが好き。
2020-02-25 10:08:46TDDが効くのは、ソリッドなコードを資産として積み上げていきたいという意識があり、かつ、テストと並行した方がそういうコードが書ける人の場合。天才みたいな人ならTDDしなくていいと思いますが、多くの人は天才ではなくてたぶんTDDは有効。BDD的なアプローチも含む。
2020-02-25 10:18:33@kyon_mm 1) 全体のループと小さいパーツのループを分ける、2) 全体のループを回すのを支援するツールを作る、を組み合わせるとよいと思います。人数がいるならこれらを並行にできるのでより強いです。
2020-02-25 10:24:04@wtnabe ってなるじゃないですかーっていうのが、エンジニアとしてがんばりどころだなとおもったしだい。もっとよい手法があるはずだ。
2020-02-25 10:27:00@kyon_mm 「設計通りに書け」「書き終えるまで動かすな」という世界にくらべるとだいぶいきいきすると感じます。いきいきって比較していいのかな?とは思うけど。コードに触れる人々がパターン試しながら解空間の探索するなんてのは、よい場です。でも、きょんさんの言うのはレイヤーが違うのかなって気もする
2020-02-25 10:44:08興味深いコメントが続いてる。TDDを実装パターンとみるのではなく、設計パターンとみることで、設計と実装のフィードバックループが回せればとは思う。BDDに近いけどもっとフンワリしてるイメージ。 twitter.com/kyon_mm/status…
2020-02-25 11:46:37ただ、DHHが言う通り「TDDは設計を悪化させる」という側面も否定できないので、悩んではいる。 基本は「作って捨てる」なんだけど、TDDをうまく使えればパターン化できそうなんだけど、なかなか捉えられない。
2020-02-25 11:51:18@kawakawa この1週間でSmalltalkをさわりながら、アレグザンダーのことをかんがえているわけだけど、いま自分がやっていることは2000年初頭から進歩していないし、最初の理想にたどりつけていないことがよくわかった。。。
2020-02-25 12:08:03@kawakawa ようやくベックやカニンガムやケイがかんがえていた状況をちょっとでも後追いできてきたなという気持ちです。。。
2020-02-25 12:11:24@kawakawa 「TDDは(小さな)インターフェースや構造の設計」なので、「TDDはメッセージ、センター、間の設計はできない」という。前者にかたよることで後者がなされず、それを「設計を悪化させる」と呼ぶこともできるかも。 DHHとCoplienが上述のように思っているかはわからないですが。
2020-02-25 12:24:59@kawakawa CRCカードとTDDはわけることができないプラクティス(センター)だったのではないのか。TDDだけをやってもベックがXPをうんだころの美しさは現場にはあらわれない。やらないよりマシだよねってなるけど、TDDによるフォースを調和できなくなってしまう。それがTDD is DEADの正体だったのでは。
2020-02-25 12:36:46@kyon_mm そう!そうなんですよ!! TDDでは直接、設計できないものがあるので、設計を悪化させるというのはわかるのですが、ただ、書かないと見えてこないことがあるのも事実だし、書かれたことは変更できるので、間接的にメッセージ、センター、間へ影響を及ぼすことが出来るのとは思うのです。
2020-02-25 12:38:27