はじめに
最近、下記のようになっている人を見るようになりました。
「Aさんは私の知らないテスト技法を知っていてすごい!それに比べて私なんか…」(自分への劣等感)
「Aさんは私の知らないプラクティスを教えてくれる!だからAさんはなんでも解決できる神のような人だ…!」(盲目的な信者)
ただ、それは自分の知らないことを知っているだけであって、必ずしもその人(Aさん)が素晴らしいかどうかはちゃんと見分けないといけないと思っています。それはどういうことなのかを、中学数学の例を使って説明してみようと思います。
目次
- はじめに
- 目次
- 二次方程式の解き方
- 3人がとある入試問題を解く
- Yさんからはどのように見えるのか?
- Zさんの吹聴に騙されてはいけない
- 日常でも同様のことが起きてないですか?
- XさんとZさんを見分ける方法
- おわりに
- 追記
二次方程式の解き方
中学3年で習う「二次方程式」を思い出してください。
因数分解を用いて解く方法
お題の二次方程式が因数分解で解ける場合、下記のようにして解答を導き出すことができます。*2
解の公式を用いて解く方法
解の公式というものがあります。
お題の二次方程式の係数をそれぞれa,b,cと置く時(a≠0の時)、上記の解の公式を当てはめることで解答を導き出すことができます。
3人がとある入試問題を解く
下記の3人「Xさん」「Yさん」「Zさん」がいます。
この3人が下記の入試問題を解くことになりました。
3人とも、この入試問題を解く第一歩として、
と置いて、
として解くことは気付いたとします。
Xさんが入試問題を解く
因数分解を用いて解く方法、解の公式を用いて解く方法の両方を知っているXさんがこの入試問題を解いた結果、下記の手順になりました。
2.仮に置いていたAを元に戻す
4.後半部分は解の公式を用いて解き、解答を記載する
Yさんが入試問題を解く
因数分解を用いて解く方法だけ知っているYさんがこの入試問題を解いた結果、下記の手順になりました。
2.仮に置いていたAを元に戻す
4.後半部分は因数分解できないため、因数分解できた前半部分の解答のみ記載した。
Zさんが入試問題を解く
解の公式を用いて解く方法だけ知っているZさんがこの入試問題を解いた結果、下記の手順になりました。
1.Aの二次方程式とみなして、解の公式を行う
2.A=7の場合で、二次方程式を考える
3.解の公式を用いることができる形に値を移行して、解の公式を用いて解く
4.同様に、A=4の場合で、二次方程式を考える
5.解の公式を用いることができる形に値を移行して、解の公式を用いて解く
6.手順3と手順5で解いた値を合わせて解答とする
Yさんからはどのように見えるのか?
さて、今回の3人の解答を見てみましょう。
Yさんの解答
Xさん、Zさんの解答
解答だけ見ると、XさんもZさんも変わりません。
解答への導き方まで見ると、Xさんの方が素晴らしいと個人的には感じます。きっと、解くのにかかった時間もXさんの方が格段と短いでしょう。
ただし、Yさんから見ると、XさんもZさんも同等に素晴らしいと見えてしまうのです。なぜならば、自分が導き出せていない答えまで出すことができているからです。
Zさんの吹聴に騙されてはいけない
ここでYさんがZさんに教えてもらおうとすると、こんなことを言われるかもしれません。
「解の公式っていうやり方があるんだよ」
「これを使うと、どんな二次方程式でも解くことができるんだよ」
Zさんが言いふらしたい気持ちも分かります。実際に自分でもこのやり方で解くことができたという自信もあるので。
しかし、それをYさんが聞いて、「解の公式さえできれば良いんだ!」と思ってはいけません。適材適所を見失うことになります。
日常でも同様のことが起きてないですか?
今回は中学3年の頃の題材を用いて説明しました。
しかし、このようなことは日常でも起きていませんか?
以下のようなことを言われて、「なるほど、そうだよね」と思っていませんか?
「テスト設計をする時は、どんな場合でもデシジョンテーブルを使えば良いんだよ」
「テストケースがいっぱいできて困る時は、PICT Masterというツールを使ってAll Pair法で解けば、簡単にテストケースが減らせるよ」
「ソフトウェア設計をする際はドメイン駆動設計を使えば良いんだよ」
「Agileに開発していくには自動テストを行えば良いんだよ」
「ScrumでのレトロスペクティブではKPTを使ってふりかえりをすれば良いんだよ」
XさんとZさんを見分ける方法
それでは、YさんはどのようにすればXさんとZさんを見分けることができるのでしょうか?
見分け方1.使い所を聞く
技法・テクニック・プラクティスの紹介だけしている場合、「どんな場合に、その方法は有効ですか?」「どんな場合には適さないですか?」と聞いてみましょう。
有効な場面、適さない場面を回答できる人は、きっと他にも数ある方法から自分なりに見極めて使っていることが想像できます。
一方、「どんな場面でも使えるよ」というような回答をする人は、そのやり方を知っているから使っている可能性があります。
また、今回の例は違いますが、「(使ったことないけど)こんなやり方があるよ」と紹介する人がいます(通称:エアプ)。「○○コーチ」というような人に多い傾向です。そのような人は、使い所に関しての質問をすることで、エアプかどうか判断できるかもしれません。
見分け方2.実際に解く過程を観察する
技法・テクニック・プラクティスを紹介してもらうだけではなく、「ちょっと使っている状況を見せて!」と言って、実際に解いている部分を見ましょう。
紹介された時は「良いかも!」と思っても、実際に使っている状況を見ることで、「あれ?この部分は微妙だな…」と気付くことができるかもしれません。
先ほどの二次方程式の例でいえば、「あれ?この部分は私がやってた因数分解の方法の方が素早くできそうだ…」と思えるかもしれません。
見分け方3.意見をぶつける
ただ紹介してもらったものを聞き入れるだけでなく、意見をぶつけてみましょう。
先ほどの二次方程式の例でいえば、「私は因数分解を使った方法で解いたのですが、因数分解を使わずに解の公式を使った理由ってなんですか?」と質問してみましょう。
質問の回答は下記3パターンに分かれるでしょう。
回答パターン1.「因数分解は使いどころを把握できていないと、使いこなすのが難しいので使いませんでした!」
因数分解を使った方法を知っていた上であえて使わなかったパターンです。
このような人は、自分が得意な部分をきちんと把握して使っているので、どういったところが難しいのかについて今後も話し合える仲になっておくと良いでしょう。
回答パターン2.「因数分解を使った方法は知らなかったです!」
そもそも知らない上で、そのことを正直に話してくれるパターンです。
さらに「因数分解を使った解き方を教えてくれませんか?」とか言ってくれる人であれば最高です。今後も、お互いに切磋琢磨して高め合える良い仲になるでしょう。
回答パターン3.「他の方法もあるかもしれませんが、解の公式ならどんな二次方程式でも解けるから良いのです!」
自分が知っているやり方に絶対の自信を持っているパターンです。
同時に、この人自身のプライドが相当高い可能性があります。
このような人は、強い断定で言い切るため信者を作りやすいですし、プライドが高いため、自分のやり方に同意してくれない人を遠ざける傾向にあります。
お互いを高め合う仲にはなれないので、プラクティスの良い話だけを聞き入れるぐらいにしておきましょう。
おわりに
最後に、最近あきやまさんがツイートしていた内容を共有します。
テスト技法は機械的に適用するものではなく、それぞれのテスト技法の考え方を理解して“テスト分析結果を確認する方法を作るテスト設計”のときに(考え方を)使うものだと思うけど、数学の公式のように考えている人のほうが多いような気がします。
— あきやま🌦 (@akiyama924) 2021年6月3日
テスト設計技法についてのツイートですが、テスト設計技法に限らずテクニックやプラクティスにおいても同じことが言えます。
技法やプラクティスを覚えると、仕事をする上で便利になりますが、同時に思考停止を招く可能性があります。
伝えようとする側の人は、やり方を他の人に伝えるだけでなく、考え方も合わせて伝えたいですね。
一方、色々なことを吸収していきたい人は、意見をぶつけられるようにするために、既存の技法・テクニック・プラクティスを知っておくと、より有意義な話ができるかもしれません。そして、分からない部分は素直に「分からない」と伝えることで、周りの人の協力を得ながら、より自らを高めていけるかもしれません。
追記
XさんだろうがZさんだろうが、道具の使い方しか知らない人はテクニシャンで、道具の原理を含めた技術全体を俯瞰的かつ体系的に身につけている人がエンジニアなのね。テクニシャン同士でどっちがすごいとかすごくないとかあんまり意味なくて、とっととエンジニアになんなさい、という感想しかない。
— Yasuharu NISHI (@YasuharuNishi) 2021年6月16日
ど正論。おっしゃる通りです。
「XさんとZさんのどっちがすごいか」は私もそこまで気にしてなくて、言いたかったのはYさんがZさんに掴まっている状況に対して抜け出してほしいという話です。
けど確かにXさんもテクニシャンの可能性だって十分にありますね。その部分は完全に抜けてる文章でしたし、ある意味この文章もXさんの盲目的な信者になっている形ですね。