経験主義を理解したらスクラムが腹落ちした
スクラムガイドには スクラムは「経験主義」と「リーン思考」に基づいている。 と書かれています。
経験主義と聞くと、一見わかるようで言われてみればなんだかイメージがぼんやりしているような。はたして経験主義とはどういうことなのか。
ということをある程度理解しておくとスクラムの理解が深まるという個人的な学びがあったので、経験主義について私の理解をインターネットに放流しておきます。
なお、私はこの分野は専門ではなく、ゆるゆるであまあまな理解が多々ありますのでご了承ください。
経験主義と理性主義
経験主義を理解するにあたって、その対義語となる理性主義とはどういうことなのか把握するのが私にとっては理解が早かったのでまずは理性主義について整理していきます。
理性主義とはめちゃくちゃ雑に言うと数学の証明のアレみたいなやつです。
数学の証明問題では絶対に誰にも疑えないものを積み重ねて、与えられた命題が成り立つ(成り立たない)ことを証明していくと思いますが、あの姿勢が理性主義というイメージです。
具体的にはユークリッド原論という理性主義のルーツ的な本があって、と書き始めるとちょっと身構えてしまう部分もあると思いますが、これは中学校の数学でもやるような内容なのでご安心ください。
ユークリッド原論では「点とは部分のないものである」というような言葉の定義から始まって、「任意の点より任意の点に直線をひくことができる」とか「等しい物に、等しいものを加えれば相等しい」みたいな公理を積み重ね、次々と「三辺がそれぞれ等しい二つの三角形は合同である」とか「三角形の内角の和は二直角に等しい」みたいな命題が論証され、その積み重ねによって三平方の定理などが成り立つことが書かれています。
ユークリッド原論が書かれた紀元前3世紀前から19世紀の半ばごろまで、多くの学者たちはこのような姿勢が学問の手本であると考えていました。
ここまでだと数学の例だけですが、例えばこのような姿勢で数学の世界のみならず世界一般の姿を捉えようとする試みがなされ、その最初の命題として「我思う、ゆえに我あり」という有名な一文をデカルトという哲学者(座標を発明した超すごい数学者でもある)が提案したりしています。この命題を元にさらなる命題を積み重ね、それによって世界一般の姿を捉えようとしたということです。
つまり、絶対に誰にも疑えないものを積み重ねて答えにたどり着く姿勢が理性主義だと言えます。
ということはその対義語である経験主義とは、理性主義のように真実を積み重ねる姿勢ではなく、とりあえずやってみてそこから学んだことを積み重ねるという姿勢となります。
経験主義を単品でみるとわかるようなわからないような概念だったのが、その対義語について整理するとどういうことか理解が進んだような感覚が私はありました。
アジャイルとウォーターフォール
この対比はソフトウェア開発プロセスを用いて考えると鮮明になります。
理性主義的なソフトウェア開発プロセスといえばウォーターフォールです。
ウォーターフォールでは要件定義、外部設計、内部設計、開発、テストと工程を積み重ねていきます。理性主義的な姿勢に立ち返ると各工程は絶対に誰にも疑えないものである必要があるため、各工程のアウトプットはより厳密なものが求められることとなります。その結果としてウォーターフォールにて揶揄されがちな大量の成果物(ドキュメント)が必要となる工程も存在しています。
しかしどれほど各工程に厳密なプロセスと多くの成果物を定義しても絶対に誰にも疑えない要件定義や絶対に誰にも疑えない設計を行うことは現実的に厳しい。少しでもソフトウェア開発に携わったことがある方ならこれらが正直言って無理だと言うことが理解いただけると思います。
というところから、果たして現実的に存在するのか疑わしくなってきた絶対に誰にも疑えないものを一生懸命頑張って追い求める開発プロセスより、とりあえずやってみてそこから学んだことを積み重ねる姿勢の経験主義に基づくアジャイルという概念が登場することとなります。
スクラムはアジャイルの一例です。経験主義を踏まえると、スクラムがチームが経験から学習し少しずつ前に進んでいくのを手助けするようなフレームワークとなっていることが腹落ちするのではないでしょうか。
経験主義と理性主義を往来する
断るまでもないと思いますが経験主義と理性主義はどちらが優れている、という話ではありません。
ソフトウェア開発においてはアジャイルが多く採用されるようになっていると思いますが、ウォーターフォールが揉まれていく中で理性主義的な姿勢に基づいて定義された成果物たちはアジャイルにおいてもチームの課題解決に寄与できるものが存在し得ます。
また、ソフトウェアの根本を支える計算機理論はまさに理性主義の真髄と言えるでしょう。
問題となってくるのは、反対の姿勢でそれぞれの考えを取り込み実践することだと思います。
スクラムを実践するのに理性主義的な姿勢でのぞみ、「〇〇ができていないからこんなのはスクラムじゃない」といった考えをしてしまうと辛くなってくるのは想像にたやすいと思います。とりあえずやってみてそこから学んだことを次のスプリントに生かせば良いのです。
その逆もしかりで、データ構造やアルゴリズム、その解析などの理性主義的な積み重ねを用いれば解決できるような課題に対して経験主義的なアプローチで挑むとずいぶんな遠回りとなってしまいます。
解決しようとする課題にどのような姿勢でのぞめば良いか、そしてどのような姿勢があるのか意識できるとストレスなくより早く課題に取り組めると思います。
少なくとも私はスクラムに対する姿勢を認識でき、腹落ちさせることができました。
みたいなことを書こうと思って「エンジニアリング組織論への招待」を読み直したら大体同じことが書いてありましたですねでした。