プログラミング中、「どこ」で思考しているのか?

先に宣言しておくと私は、「脳という場所で思考したことをコードのカタチにする」というプログラミングモデルは否定的なポジションだ。

私は、ディスプレイを通じて、t時のテスティングフレームワークの実行結果、t時 プロダクションコード、t時テストコードとインタラクションしながら、t+1時のコードのよりGoodのカタチをイメージしながら書いている。サンプルコードを探しに、インターネットやPCのディスクを検索し参照しているかもしれない。その際、キーボードやマウスを操作している。どっから着手していくかのTODOリストを紙に書いていることもある。ホワイトボードにモデル図を描いているかもしれない。ペアのパートナーと会話しながらコードを記述していることもある。

私は多くのなにかと対話(インタラクション)しながらタスクをこなしている。この際、「思考」がどこで行われているかの範囲は、狭く捉えると私の「脳」1つとなる。が、広く捉えると、私とインタラクションしている何か全て通じて思考している。インタラクションするにはディスプレイを見たりキーボード操作したりホワイトボードに絵を描いて見たり、体を動かすことが必要となる。体を動かすことなしに、思考することはできない。

「脳で考える」「思考する->体を動かす(順序)」のモデルはいったん保留し、「私が周りの環境とインタラクションしながら考える」「(体|脳)を動かす(並行)」を検討すると、別のプログラミング観が浮かび上がる。

「私」を「私たち」まで広げると、ユーザーストーリーやAcceptance Testingなどエクストリームなプログラミング観に近づいていくだろう。