以前、少しだけ学生にプログラミングを指導していたことがあります。当時、学生とよく行っていたやり取りがあります。具体的には、コーディングを面倒くさがって音を上げる学生とのつぎのようなやりとりです。

学生 「面倒くさい。先生、何か裏技のような方法はないんですか?」
私  「あるよ、お金を払って外注に出せばいい」

もちろん、私のこの回答は適切とはいえません。ですので、その直後に必ず説明をするようにしています。仕事でプログラムを開発するのであれば、プログラムを完成させることが目的であって、自分でプログラミングするか外注するかは手段でしかありません。だから誰がやるかは交換可能なのです。もちろん、それができる立場でなければなりませんし、場合によってはそれで自分が仕事を失うこともあり得ますが……。

一方、勉強でプログラミングをやっているのであれば、能力を身に付けることが目的であって、プログラムを完成させることは手段でしかありません。だから自分でやるしかないのです。自分の状態を変化させなければならない以上、自分でやるしかありません。それを人任せにするのは、トイレに行くのが面倒だから代わりに行ってくれというようなものです。

プログラマーは面倒くさがりの方がよいという話もよく耳にします。しかし、これもプログラムを完成させることが目的の場合に当てはまることであって、勉強によって能力を身に付けることが目的の場合はあてはまりません。実践的なプログラミングで、冗長な部分をなくして効率を上げることで、面倒なことを回避するための能力を身に付けるのは、それはそれで面倒なことなのです。

面倒くさいから手を抜きたいという欲求が、結果としてよりよい成果物を生み出す方向であればよいのですが、そもそも未熟な学生にそれを期待しても無理です。それよりは、少々面倒でも体で覚えることを目指す方がよいでしょう。そうでなければ、安易に他人の成果物をコピーするだけのような、そういう方向に走ってしまいますから。

勉強の過程では面倒なことは多いもので、実務では使うことが少ない、またはまったく使わないようなことでも基礎として学ぶ必要があります。そうでなければ、いくら便利な道具があっても本当にそれらを使いこなすにはいたらず、道具に使われるだけになってしまいます。身近にいませんか? 何とかフレームワークの奴隷のようなプログラマーが。

そういえば、当時小学生だった娘が冬休みに書き初めの宿題をやるときに、墨汁が切れてしまったらしく、困っていました。私は「墨を磨れ!」と指示しました。娘は面倒くさいといっていましたが、墨を摩りながら精神を整えるのは書道の基本であり、上達すれば墨汁でもある程度それができるようになるのでしょうが、初心者にそんなことは無理です。だから面倒でも墨を磨るわけですが、最近はそんなことも教わらないようです。結局、面倒くさがって薄墨になってしまい、書き初めがお悔やみのようになってしまっていました。