コードと心の距離

読んで色々考えていた。

「心」を扱うとどうも「ふわふわしたもの」と見られがちだが、その判断はいったん保留し、もう一度、「コードと私の心の関係性」について思索を試みる。 私にとって、コードと心の関係性は、繰り返し上がってくる興味が引かれるテーマだ。

「TDD」 と「コード」と「心」について落ち着いて理解する、補助線に「色彩論」が役立つ。色と人の心を関係性を深く深く探求したのが、ゲーテの色彩論だ。機械的世界観をベースにしたニュートンの色/光学に対する理論に反発して出てきた考えだ。
色彩論 - Wikipedia

建築のパタンランゲージも似たところがある。住む人々の心と建築のかたちの深い深い繋がりについて語っているのがパタンランゲージだ。

似たように、コードと人の心の関係性はあると私は考えている。一部の人は感度が高い。普段の会社の同僚のコードに対する反応を観ていると凄く感じる。私より、Good Code, Bad Code に対するリアクションが大きい!コードを見ながら、 笑顔がこぼれるし、苦渋の表情と声を出して表現していることがある。

私のような感度が普通の人でも、コードと人の心の繋がりを探求する道具として、TDDは役立つ。個人的見解だが、TDDを知る以前と後では、コードと私の(心)の距離感がぐっと縮まった感がある。(DDDでもHands-On Modelerとしてわざわざ、モデラーの人でも、プログラマーとしてコードにどんどん近づくようにアドバイスしている。)

「距離感がぐっと縮まった」もっとうまく表現したいところだが。。。。「何度も試行錯誤しながらよい形を求め続けている」「愛着を持って手入れをする」「私はコードに対してもっと真剣に向き合おうとしている。」「重複コードを取り除いてすっきりした」「より明瞭に書けて嬉しい」「コードと私の間が時間的/空間的/心理的に近くなった」。。。。

初心者は熟練者ほど、コードと心のつながりを深く感じ取っていない。どのようにして、感性を磨いていくのかちょっと謎だ。うまい人と組む? コードレビューを何度も受ける? Github上を徘徊する? 学習に対してオープンな姿勢を持つ? TDDを続ける?

経験者でも、何かをあきらめて過ごしているとコードと心のつながりは遠くなってしまう。注意が必要だ。映画に例えるなら、マトリックスのブルーピルを飲んだ状態だ。コードの声を聴こえないふりをしていると本当に聴こえなってしまう。正直に告白しよう。私もコードの声を聴こえないふりを何度もしてしまってきた。

コードへの愛着やこだわりは単にプログラマーとコードの関係性だけで閉じていない。ユーザ-フィードバックからの予期せぬ変化が起きることを予期し、内側の質を保ち続けてれば、フィードバック対応できるチャンスが増え、外側の質も保たれるはずだ。これはユーザーにとっても喜ばしいこと。GOOSはその道筋のヒントをくれている。DCIはユーザーのメンタルモデルをコードに反映することを試みている。ドメインエキスパートが読むことを想定したDSLだと、ドメインエキスパートとコードの距離は近くなる。個人的には、DDD8章の内側の質のこだわりが外側へ(営業の人の営み等)と広がっていく話も好きだ。