師匠を見つけ、自らの「従弟制度」を作り出そう――『アプレンティスシップ・パターン』
アプレンティスシップ・パターン 徒弟制度に学ぶ熟練技術者の技と心得 Dave H. Hoover、Adewale Oshineye(著) 柴田芳樹(翻訳) オライリージャパン 2010年7月 ISBN-10: 4873114608 ISBN-13: 978-4873114606 2310円(税込み) |
■新人ソフトウェア技術者のための「学びのパターン」
「無知をさらけ出す」「自分の地図を描く」「良き指導者を見つける」「自分の仕事を省みる」「フィードバック・ループを構築する」「古典を学ぶ」……「良い」とされているけれど、なぜ「良い」のか体系だってまとめられることの少ない、ソフトウェア技術者に必要なスキルアップのための行動というものがあります。日々、なんとなく行っていたり、あるいは行わなければならないと思っていたりする行動パターンが、皆さんにもあると思います。
本書『アプレンティスシップ・パターン』は、新人のソフトウェア技術者が「熟練職人」になるための行動パターンをまとめたものです。産業革命以前の中世ヨーロッパに広く普及していた職人たちの「ギルド」における従弟制度をモデルにしているところがポイントです。
ギルドが熟練職人(master)を管理する。熟練職人は工房を持つ。そのもとにジャーニーマン(journeyman:熟練職人には到達していない職人)がいて、技芸を学ぶ。ジャーニーマンは旅をして技芸を都市から都市に伝え、アプレンティス(apprentice:従弟)を監督する――これが当時の従弟制度です。著者は、このモデルをそのまま現代のソフトウェア技術者の世界に適用するのは実用的ではないとしつつも、参考にし、「現代的な工芸スタジオを選ぶことができる」と主張しています。
現代において、新人ソフトウェア技術者が良き職人から指導を受けられる制度は確立していません。職場に、あるいは新人が配属されたチームに、良き職人がいるかどうかは確率論でしかありません。だから新人ソフトウェア技術者は、自分なりの「従弟制度」を見つけ出し、確立する必要があります。本書に収められている行動パターンは、そのための指針として役立ちます。
■良いパターンは成功例から語られる
本書に収められているパターンは、優れたソフトウェアフレームワークやデザインパターン同様、正常に機能しているシステムから抽出されている、とされています。著者が出会ってきた熟練職人たちの「経験」の話から形作られているのです。
いくつか列挙します。
- 情熱を放つ(Unleash Your Enthusiam)
- 無知をさらけ出す(Expose Your Ignorance)
- 無知に向き合う(Confront Your Ignorance)
- 持続可能なモチベーション(Sustainable Motivations)
- 自分の地図を描く(Draw Your Own Map)
- 良き指導者を見つける(Find Mentors)
- 気の合った者同士(Kindred Spirits)
- 練習、練習、練習(Practice, Practice, Practice)
- 壊してよいオモチャ(Breakable Toys)
- 学びを記録する(Record What You Learn)
- 学びを共有する(Share What You Learn)
- 継続した読書(Read Constantly)
- 古典を学ぶ(Study the Classics)
パターン名を見ただけで、何となく想像のつくものが少なくないと思います。「熟練職人」であれば、「そう、それは大事なんだよ」と、見ただけである程度理解できるかもしれません。逆に「どういうこと?」と首をかしげてしまう新人=アプレンティスの方は、本書を手にとって、気になるパターンだけでも目を通すと良いでしょう。いくつかのパターンに目を通していると、やがてそれぞれのパターンがリンクし、どう影響し合っているかが見えてきます。
具体的な例を挙げましょう。エンジニアライフ コラムニストの鹿島和郎氏は、新たにScalaを学ぶべく、関連コミュニティや勉強会を探して参加したり、自ら入門書を読む勉強会を立ち上げたりしています。これは「学びを共有する」「無知をさらけ出す」「白帯」「学びを記録する」「気の合った者同士」の5つのパターンの実践である、と鹿島氏は語っています(もしかすると、ほかのパターンも含まれているかもしれません)。
同じくコラムニストのkwappa氏は、「良き指導者を見つける」ことの重要性を、自らの「師匠」の思い出を語ることで表現しています。
■学びの環境を構築する
「ソフトウェア開発は技芸です」と著者は語ります。科学のように、体系化されたものとして扱うほどに、わたしたちはソフトウェア開発を理解し切れていない、というのがその理由です。
だからこそ、技芸としてのスキル伝承パターンを構築する必要があります。その意味で、よくあるマネージャやリーダー向けの「新人はこう育てろ」的なアプローチではなく、新人に向けて「こうやって学ぶ環境を構築しろ」と伝える本書には大きな意義があるといえます。自分の学びの環境は、自ら構築しなければならないからです。
本書は翻訳に難があるのか、少々読みにくい部分もあるのですが、「熟練職人」を目指す新人ソフトウェア技術者であれば、読んで損はないでしょう。