こまぶろ

技術のこととか仕事のこととか。

Kent Beckの「偉大な習慣を身につけたプログラマ」について

Martin Fowlerの『リファクタリング』で紹介されているKent Beckの言葉として以下のようなものがある。

僕は、偉大なプログラマなんかじゃない。偉大な習慣を身につけたプログラマなんだ。

この言葉について少し調べてみたところ、思うところ/学ぶところがあった。

身につけることのできる「偉大」

この引用句、原文(わざわざ手に入れることはしなかったので、孫引きにはなる)においては、以下のようになっているらしい。

I'm not a great programmer; I'm just a good programmer with great habits.

Kent Beck - Wikiquote

この言葉の最大のポイントは、"great"という形容詞で(自らを示す)プログラマを修飾するのではなく、(自らが身につけた)習慣を修飾するように「ずらし」ているところだろう。「偉大なのは自分ではなく、習慣なのだ」ということが表現上の力点になる。

その「ずらし」の効果は、「偉大な習慣を身につけたら、あなたも私のようになれますよ」というメッセージを伝えることだと思われる。少なくとも、Martin Fowlerがこの言葉を引用することによって狙っているのは、「リファクタリング」という偉大な習慣を身につけるべきだという書籍の立場の説得力を増すことであるだろう。

邦訳で欠落した"good"という修飾語

しかし、気になることがある。それは、原文にある"good"だ。"programmer"を修飾しているこの語句のニュアンスは、邦訳では欠落している。

このことを知ったときの最初の反応が下記のツイート。「なんだよ結局いいプログラマなんじゃん」という思いで投稿した記憶がある。

あらかじめ断っておきたいのは、翻訳を非難する意図はないということ。むしろ、翻訳としてはこの"good"のニュアンスを切り落とすことは意義のある行為だったと思う。

おそらく邦訳者は、敢えて"good"のニュアンスを欠落させて翻訳しているのではないか。私見では、そのことによって、"great"の修飾対象の「ずらし」を鮮明にすることができている。原文通りに、

僕は、偉大なプログラマなんかじゃない。偉大な習慣を身につけた良いプログラマなんだ。

と訳してしまうと、僕の上のツイートのような反応を呼んでしまう。そしてそれは、引用者であるMartin Fowlerが期待する反応ではないし、『リファクタリング』という書籍の中の表現としてはノイズになる。だからこそ"good"のニュアンスは落とす必要があったのではないか。

なぜ、Kent Beckは、わざわざ"good programmer"と言ったのか。これはよくわからない。一つ言えるとすれば、Kent Beckが単なるプログラマでなく、間違いなく"good programmer"であるということだろう。

究極の習慣としての「省察

この言葉について調べてみると、下記のようなQ&Aサイトの質問に行き当たった。

Kent Beck: You have been quoted saying "you are not a great programmer", but rather a "good programmer with great habits" What are these great habits?

Kent Beck: You have been quoted saying 'you are not a great programmer', but rather a 'good programmer with great habits' What are these great habits? - Quora

質問者がKent Beckに「ここでいう偉大な習慣(※複数形)とはなんですか?」と質問したのに対して、Kent Beckは以下のように答えている。

省察*1が究極の習慣です。「直近の1時間はどうだっただろう?もっと上手くできたことは何だろうか?次に試したいことは何だろうか?」内省が、他の全ての習慣へと繋がります。

省察というのは、我が身をふりかえってよく考えることだ。Kent Beckは、この省察が、他の全ての習慣を導くといっている。「自分は適切な習慣にしたがっているだろうか」という省察が、他の習慣の持続を裏付ける。あるいは、「もっと上手くやるためにどのような習慣に従えばいいのだろうか」という省察が、他の習慣の獲得に繋がる。そういうことだろう。

「他の習慣」の例としては、回答の最後で提示されている3つの習慣がある。その3つとは、「他人のためにコードを書く」、「スモールステップで仕事をする」、「よく休息をとる」だ。彼の書籍は、基本的にこの3つの習慣について書いているのだという。

ちなみに、『エクストリームプログラミング』でも、"Reflection"(訳書では「ふりかえり」)についての一項目が設けられている。冒頭を引用する。

優れたチームは単に仕事をしているだけではない。どうやって仕事をしているのか、なぜ仕事をしているのかを考えている。なぜ成功したのか、なぜ失敗したのかを分析している。自分たちのミスを隠そうとはしない。それを明らかにして、そこから学ぼうとするのである。偶然に優秀になれる人などいないのだ。
  『エクストリームプログラミング』27頁

ここでは、「学び」という側面が強く押し出されている。「習慣」について言及があるわけではないが、学習の結果の行動の積み重ねが習慣であるということで、「内省→習慣」の間を埋めるものとして読むことができるだろう。

結:習慣をめぐる戦い

技術書典5で頒布された「セイチョウジャーニー」(Growthfactionさん)に、1頁分だけ寄稿させていただいた。そこで、「自分にとって成長とは何か」として、下記のように書いた。

悪い習慣を捨てて、良い習慣を身に付けること。そして、身に付けた良い習慣をより優れた習慣にすることです。

growthfaction.booth.pm

悪い習慣は簡単に身についてしまう。成長は自然に起こるものではなくて、むしろ人生は「成長の反対」に満ちている。僕にとって、人生とは習慣をめぐる戦いだとも言えるかもしれない。

省察的実践とは何か―プロフェッショナルの行為と思考

省察的実践とは何か―プロフェッショナルの行為と思考

エクストリームプログラミング

エクストリームプログラミング

*1:原文は"reflection"となっている。「反省」とするのはネガティブな印象を与えるし、「内省」というと対象が内面・心の動きに限られてしまうので、「省察」とした。