プログラミング学習手段としての写経について

あるブログが「写経には効果がない」という趣旨のことを書いていて「何を言ってるんだ?」と思いじっくり読んでみたら、彼の言う写経は「動くとわかってる10000行のコードを何も思考せず作業として書き写すこと」を指しているようだった。「そんなわけないじゃん」と笑ってから「もしかして世の中は写経をそういう捉えてるのか?」と不安になった。

写経は自分の中にモデルを作るための行動で、他のもっと効率のよい方法と比べた場合の利点は「自分の中にモデルがなくても使える」点に尽きる。全く知識ゼロでいきなり「自分で考えて書く」ができる人はいない。考えるための材料となる知識をまず脳内に運び込む、それが写経だ。

写経の過程で大事なことは以下の3つだ。

  • 1: 早く学びが得られるように、なるべく小さいコードで実験し、すぐに結果を確認する。
  • 2: 疑問に思ったこと、考えたこと、気づいたことを書き留める。どうしてこういう書き方をするのだろう?もしかしてXをYに書き換えたらエラーになるのだろうか?そうか、さっき疑問に思ったあれは、今写しているところとペアになるようになっているのか、などなど。この思考が、次の学びのための足がかりになる。
  • 3: 一字一句同じに写すのではなく、自分が必要ないと思ったら省略すること。必然的に何が重要で何がそうでないかを考えることになる。
        • -

今日の昼、「プログラミング出来ない奴ちょっと来い」を見てTweetした内容を転載しておいた。

        • -

「写経」という言葉が誤解のもとだ、という趣旨のコメントには大賛成なので、なにかいい呼び名を思いついたら教えて下さい。

        • -

追記:

先日「写経は無益」という主張に反論して「写経は有益」と主張した。しかし「写経が常に最高」と言ったつもりはない。むしろ写経は最低の勉強法だ。しかし他の勉強法が使えない、解説や仕様書や論文を読んでも頭に入らない、そんな時にでも使える最後の手段が写経なんだ。