日本の文化における師弟関係のあり方として「守破離」という考え方があります。最初は師匠の教えや型を忠実に「守」ることから始まり、自分なりに型を「破」っていくことで次の段階に移り、最終的には「離」れて自らの型を創りだす、というプロセスのことです。

アジャイル開発の文脈でも「守破離」という言葉が使われることがあります。アジャイル開発を身につけていくためのプロセスという訳です。ただ、初心者にとって何をすれば「破」なのか「離」なのか、なかなか難しいところでしょう。

この記事では、身近なテーマである料理を題材にして「守破離」について学ぶことで、アジャイル開発の「守破離」に必要な考え方について書きました。

Cooking
Cooking / Skånska Matupplevelser

料理の守破離

私は趣味で料理をよくしています。趣味とはいえ、ずっと料理を続けていると、徐々にレシピを見なくても料理を作ることが出来るようになりますし、調味料は目分量でいけるのはもちろんのこと、自分なりのアレンジをすることができるようになりました。しかし、最初からそうだった訳ではありません。

そういえば、料理を始めたばかりの頃は、レシピ通りに作ることに必死でした。作りかたもレシピに忠実に従い、調味料も大さじ小さじをしっかり計っていたように思います。これは「守破離」でいえば「守」の段階です。レシピに頼ってるうちは初心者の域を出ません。

次に「破」の段階を目指す訳ですが、ただアレンジをすれば「破」になるのでしょうか。それだけではただの「型破り」で、本当に美味しい料理ができるか怪しいものです。よく料理に失敗する人は、ただレシピから外れて勝手なアレンジをしてしまっているのではないでしょうか。

「破」にいく前に「守」の段階でしなければいけないのは「考えること」です。そのレシピに書かれていることの裏側を考えることです。なぜ、そのレシピの手順や分量になっているのか、を考えるのです。

たとえば、なぜ「さしすせそ」の順番で調味料を入れるのか、なぜ一日置いたカレーの方が美味しいのか、なぜ灰汁をとらないといけないのか、などなど、レシピに書かれた裏側には沢山の理由があります。それらはすべてパターンとして覚えることも出来ますし、科学的に理解することもできます。

そのレシピの裏側にある原理や原則を理解して覚えていくことで、失敗しないアレンジができるようになります。そうした原理原則に従った自分なりのアレンジが出来るようになって「破」の段階になれる訳です。

頭を使わずに何も考えずにレシピ通りに料理を作り続けても、料理は上手にならない訳です。同じレシピなら出来るかもしれないけれど、作る分量が違ったり食材を変えたりすることが難しくなるでしょう。

そのアレンジが当たり前になってくることで、自分なりの料理を作ることが出来るようになります。ありあわせのものでも料理を作れるし、外食で食べた料理でもなんとなく再現することが出来るようになるでしょう。もはやレシピはいりません。これで「離」の段階になるのではないでしょうか。(私の料理の腕前は、まだ「破」なので、その境地はわかりませんが。)

アジャイル開発での守破離

「守破離」における「守」から「破」へ成長するために重要なことは「裏側にある原理原則を考えること」ではないか、ということが料理の喩えからわかってきました。アジャイル開発でも同じように考えることが出来ます。

アジャイル開発における「守破離」の「守」は、「eXtreme Programming」や「スクラム」といった方法論で解説されている「プラクティス」を実践することから始まります。「ペアプログラミング」「朝会」「ふりかえり」「継続的インテグレーション」「テスト駆動開発」「リファクタリング」などなどの多くのプラクティスを実践していきます。

初めて取り組むならば、まずは教科書通りで構いません。熟練者は「プロジェクトの文脈に合わせましょう」というアドバイスをしがちですが、そもそも型を知らずに、最初から自分なりのアレンジをすることは危険です。自分なりにアレンジして失敗してしまう料理と同じことになってしまうでしょう。最初は教科書通りにやってみて練習をするというのが大事なんだと思います。

逆に言えば、教科書通りに試せるような環境やプロジェクトから、まずは導入すべきだということです。いきなり最初から難易度の高いプロジェクトや大規模なプロジェクトで、初めてアジャイル開発をするというようなことであれば、アジャイル開発の基本すら出来ない状態でそれは、そもそもうまくいきません。一度も料理をしたことが無い人が、いきなりフランス料理のフルコースを作るようなものです。

最初は型に従ってでも経験を積むことが大事です。その「守」の段階で大事なことは、それらの行動の裏側にある理由を考えることです。なぜペアプログラミングをするのか、なぜリファクタリングをするのか、すべてのプラクティスの背景にある理由を考えていきます。そのWhyを考えていくことで、何を守って、何を守らなくていいのか、ということが徐々にわかってきます。

そもそもの目的を理解した上で、自分たちの行動・プラクティスをする理由がわかってくれば、おのずと工夫をすることが出来るようになってきます。そもそもの目的に照らし合わせて考えると、もっと効率的で、もっと上手にプロジェクトを進めていくためのやり方が見えてきます。そうしたタイミングで、それまでの型を破って、アレンジしていくのです。そのための機会が「ふりかえり」です。

実践のない学習だけでは上達しません。どれだけ沢山のレシピを読んだところで料理がうまくなる訳ではないのです。経験こそがレベルアップの基本です。実践すること、そして、考えること、この2つを続けていくことで成長することができます。実践だけではマニュアル人間に、考えるだけでは頭でっかちに、なってしまいます。

「守」から脱するには、実践の中から原則を理解していきましょう。その本質は何かを見極めて、本質に沿ったことにあわせて、それまで守ってきたことを破るのです。それは勇気のいることですが、そうして初めて「破」の段階に移ることができます。

そこからが、あなたのアジャイル開発の始まりです。