経験主義とTDD

TDDの特徴の1つは、プログラマーの身体を通じた知覚を重視している点にある。コードがクリーンかどうかを判断する標本のいくつかは外部参照はできるものの、重要判断ポイントは 「【私が(他人が)】心地よく読めるか?」の問いにどう答えるかにある。 (可読性の他に、テストしやすさ、修正しやすさなどがある)
「私が(他人が)心地よく読めるか?」の判断は、私がコードを読む身体を伴った知覚行為を通じて実行される。 己とコードが向き合ったその瞬間瞬間に、テストコードがプロダクションコードが何を語りかけているか(=自分が今何を感じ取っているか)に耳を傾ける観察眼がプログラマーに求められる。練度の高いプログラマーであれば、不吉な臭いを感じ取る感度が高く、察知し、クリーンなコードに置き換えていく運動までシームレスに行える。
(さらに練度が高まれば、コードのかたちと己のメンタルモデル(自己)と顧客のメンタルモデル(他者)を調和していく過程に、喜び/尊さ。。。を感じている人種もいるようだ。)

練度の高いプログラマーも、はじめから、不吉な臭いを感じる取る感度は高いわけではなく、自分よりうまいプログラマーから肌感覚を教わりながら、磨きをかけていく。


合理主義を前提とした設計行為であれば、設計の善し悪しの判断を人の経験をベースにおかず、設計の原理原則のマッチ度合いで判断する。前払い設計が好まれる。


もちろん、実際にプログラミングでかたちづくっていく場合は、片方だけでは行われない。経験主義と合理主義のハイブリットで、肌感覚(己の身体を通じた経験をベース)と設計原則のマッチ度合い(外部標本をベース)の2つから 設計の善し悪しを判断し、かたちづくっていく。