このブログは、プログラミング教育 Advent Calendar 2015 - Adventarの24日目の記事です。
24日目の話題は、プログラミング教育について。今回は、プログラミングにおける「なまけること」についてかいてみようと思います。
突然ですが、自分はプログラミングは「怠けることに全力を尽くすこと」だと思っています。将来的に自分の手間を軽減するために、いかに機械に頑張ってもらうか。そのための命令を機械に与えるか。それがプログラミングだと思います。
たとえば、良く使う処理をモジュール化することも、メソッドの引数を工夫して似た処理を一つのメソッドにまとめることも(「保守性の向上」という効果もありますが)、大本は、「コードを書く手間を減らすためのもの(=怠けること)」だと思っています。だから自分は、プログラミングをするときは、如何に「一行でも多くコードを減らすか」、「一文字でも多くタイプ数を減らすか」を念頭に置いてコーディングを行うようにしています。それは将来的に、自分の手間を減らすことに繋がると思うから。
怠けることに真剣に
ふと思ったけど日本には「正しく怠ける」「怠けるために全力を尽くす」という考えの無い人、結構いるんじゃないかなと思う。さっきのNHK深読みの件もそうだし、いっこうに減らない会議とか、回りくどい開発手法とかでもそう。
— 高見ちえたん|1/23HTML井戸端 (@TakamiChie) 2015, 12月 12
ただ、最近思うのですが、人間――少なくともわたしの知っている日本人には、正しく怠けるということが苦手か、そういう概念が無い人が多いように思います。少なくとも自分の身の回りには、将来怠けるために、今コードの効率化に真剣に取り組む というタイプのプログラマがいなかった*1。
そういう人は、例えば新しいシステムを作って作業を効率化するとか、ルーチンワークをプログラムに実行させるとか、そういうちょっとしたプログラム的作業に目を向けないことが多いな と言う風に感じています。そういう人に限って、案外定型的な作業を結構持っていたりするんですよね。1日当たり10分程度で終わる作業でも、同じ作業を20営業日やったら200分もの時間がその定型作業に費やされてしまうというのに。
プログラミング教育をするにあたって
ちょっと話しが逸れました。ここでプログラミング教育についてにつながります。
プログラミング教育をするにあたっては、この「怠けるために全力を尽くす」という考え方を伝えることも重要なのではないかな と思います。将来怠けようと思うからこそ、「このメソッド、似た処理同士で共有できないかな」とか「すでに誰かやってないかな、ライブラリが公開されてないかな」とかいうことを真剣に考えることができるわけで。「将来の保守性のため」とかいう曖昧な理由では、案外そこまで真剣にライブラリを探したり、メソッドを効率化したり、できないのではないかな と思うのです。
だからこそ、「怠けることを覚えよう」。プログラミング教育には、それが必要なんじゃないかな と思います。
そして、「怠けることが許容される社会を作ろう」そのためには、なるべく多くの人がプログラミングや、それを通して見える「正しく怠ける」ための考え方を身につけることが重要なんじゃないかな と思います。
以上、簡単ですがクリスマスイブのブログ記事でした。