2011-05-28

メタ認知のヒント: Andy Hunt 「リファクタリング・ウェットウェア - 達人プログラマーの思考法と学習法」

転職するときに、以前の職場の上司からもらった本です。当時はピンとこなかったけれど、今読み直すと理解できるようになりました。同時に、この1年何をしてたんだという後悔も。まあ、後悔は毎日のようにしているので、慣れっこです。なんで、もう一度念入りにおしりを拭かなかったのだろう、とか。

格言とは、その状況に応じて臨機応変に解釈が可能な基本的な 原理・原則です。 (p.11)

レシピと格言とは異なるのもなのですが、混同されていることがあると思います。この本でも、疑わしければユニットテストしろ、というのをレシピと取るか、格言と取るかで、具体的な行動や判断基準が変わってくるとあります。

プロジェクトの終わる瞬間が知力のビークであり、開始時点ではもっとも低いということです。これでも、早い段階で決断を下すのが賢明な判断だと思えますか? (p.113)
アジャイルなソフトウェア開発は不確実な状態での作業を許容する方法論です。 最初のうちはプロジェクトの最終日が本当はいつになるのかわかりません。次の反復でどの機能が採用されているかは100%確実にはわかりません。反復が何回あるのかわかりません。でもそれでまったく問題ないのです。その不確実性に浸る心地よさを味わえるようになればよいのです。進んでゆく過程で徐々に答えが見つかり、最後にはすべての答えが出ています。 (p.114)

時間がたつほうが判断が正しくなり、時間が早いほうが残り時間が多くなります。そのトレードオフであると考えるといいのかも知れません。ういうモデルでプロジェクトを考えてみると、「アジャイルと規律」なんかで言われていることと一致するのかも。

最低限の時間を定期的に投資すると決めてしまうのです。[...] その時問すべてが等しく生産的になるとは限りませんが、定間的に予定に組み込むことで、長い目で見るとうまくいくでしょう。 (p.151)

長い目でみるとうまくいく、っていうのは、安心と自信を与えてくれる。おそれずにやっていこう。

しかし「最初からうまくいく」ことが大切なのでは なく、「最終的にうまくいった」ということが重要なのです。 (p.184)

これは斬新。いままで失敗は悪だと思い込んでいた。最終的にうまくいく過程で、失敗できるようリスクを最小化すればよいのだ。一発成功を狙うほうがはるかにリスクが高い。

と、まあ、Andy Hunt が書いているということもあって、最終的にはアジャイルな話になってきました。それでも、長期的な学習や、そのメタ認知の視点のヒントがありました。実践してうまくいったらものがあれば、また、どこかで書きます。