アンラーニングのスキル

それゆけ西表島さんが、ソフトウエア技術者に必要なスキルを「アンラーニングのスキル」といううまい言葉で説明している。

なぜ、アンラーニング、つまり忘れることを「スキル」と言えるのか。それを、もう少しつっこんで考えてみたい。それゆけ西表島さんも言っているが、「アンラーニング」と言っても、古い技術、役に立たなくなった能力を忘れて、やみくもに新しい方法をありがたがればいいものではない。

当然、新旧二つの選択肢があった時には、適切な判断が必要である。環境と自分や自分の組織の能力、経験を比較して、多面的にバランスよく考えないと正しい判断はできない。

アンラーニングのスキルとは、そういう場面で、自分の限界を把握する能力だ。自分の認知が歪んでいることを計算できる能力だ。

誰でも自分が慣れ親しんだ方法をひいきしてしまいがちだ。その価値観や方法論はすみずみまで体験的に理解している。感情的な執着があるし、それがプライドのささえになっている。新しい方法は、過去の否定を含んでいるから意味があるのであって、それは、過去につながっている自分には、常に挑戦的に見える。素の自分が、両者を公平に比較するのは困難だ。

その時に、アンラーニングのスキルを持つプログラマは、素の自分がどう間違っているのか、客観的に把握することができる。それによって、過去の自分の経験から、正しい判断に役に立つエッセンスを抽出することができる。だから、まっさらな新人より適切な判断ができるのだ。

アンラーニングのスキルによってプログラマは、自分が開発しようとするシステムの、使用するOS、言語、ツール、アーキテクチャを正しく判断し、自分が次に勉強すべき技術を正しく判断し、自分のキャリアを正しくデザインする。

ソフトウエアを巡る状況の変化のラディカルさは、半端なものではない。ちょっと古い記事だが、capsctrldaysさんのDOA+コンソーシアム設立記念講演開催でそれがよくわかる。

ここで批判的にレポートされているDOAという考え方は、それほどコチコチの石頭ではない。むしろ、新しい発想法を積極的に取り入れようとしている。ただ、ひとつだけ譲らない(譲れない)のが、組織形態に関する方法論だ。昔ながらのメインフレームの開発手法は、次の組織を前提としている

  • 少数の極めて優秀なSEが全体を設計して指示を出す
  • 多数の平均的プログラマーが指示された通りに動く

従って、方法論には次のような特性が強く要請される。

  • どの兵隊を使っても、まったく同じことが出来る
  • 何か失敗しても影響が局所的ですむようになっている

DOAは、この発想を、この発想だけを保存したまま、他の全てを新しく作り変えようとしている。その発想を不変の公理と考えれば、それはほぼ正しい。

  • 少数の極めて優秀なSEが全体を設計して指示を出す
  • 多数の平均的プログラマーが指示された通りに動く

この組織原理は、業界の構造に組みこまれていて、普通では変わらない。それは技術の問題でなく、契約やビジネスの慣行にしっかり貼りついている。多くの業界人にとって、そのやり方だけが現実で、彼らの現実の中では、それは揺がない不変の原理だ。小手先の技術を取り変えるのは簡単なことだが、こういう組織原理を疑うことは大変だ。

今、プログラマの見習いが「仕事の流れ」というものを覚えようとしたら、「アジャイル」という言葉は避けられないが、「アジャイル」の本質はこの組織原理の否定であって、何をいつどのようにどの程度否定するか、その否定の加減をスキルとして先輩から盗まなくてはいけない。否定しすぎる人と否定しすぎない人と適切に否定できる人を見わけて、よいお手本になる人を見つけなくてはいけない。

こういうことを要求される商売はめったにないし、それに適応することが、プロとしてのスキルの中核になる商売はプログラマだけだと思う。