デバッグは試行錯誤ではない

「いわゆるプログラミング教育」の議論の中で「デバッグ」という言葉がちらほら見えます。そこで言われる「デバッグ」とは「プログラムのバグを見つけて修正すること」という意味で使われています。

そしてなぜか「プログラムのバグを見つけて修正すること」が「試行錯誤」と関連づけられていることもよくある。「試行錯誤」することが「探求的」であり「いわゆるプログラミング教育」の中でも「デバッグ」が子供たちの学びになる、みたいな言い方がされていることもあります。が、はっきり言っときます。

デバッグは試行錯誤ちゃう!

申し訳ないけど、職業エンジニアがデバッグを「試行錯誤」でやってたら、僕はそいつをシバきます。「ずっと繰り返す」で囲った往復ビンタでシバきます。

デバッグは試行錯誤じゃなくて「仮説と検証」です。なんかしらんけど動くようになるまで手当たりしだいにプログラムを変えたら動きました!そんなんあきません。

事実としてこういうことがわかってる、ここまでちゃんと動いてることは確認できてる、だからここに問題があるんちゃうか?そういう仮説を立てて、その仮説通りかどうかを確認していくのがデバッグです。

デバッグはプログラムを作るより難しいんですよ。元々自分の考えたことが、きちんと動いていないわけですから、自分を疑わないといけない。でもどこを疑ったらいいのかわからない。なので、仮説を立てて自分を疑ってそれを検証していく。めっちゃストイックな作業です。

そこをわかってない人に「子供にバグの修正をさせることが、探究的な学びになる」とか言われたくないっす。