プログラミング言語の習得

大学を卒業して今の会社に入ったとき、私はプログラミングについてはまったく無知でした。会社に入ってプログラムを作ることになるとも思っていませんでした(ちなみに、私が勤めている会社はシステム開発がほぼ唯一の業務です。つまり、自分が入ろうとしている会社が何で稼いでいるかも知らなかったのだから、あきれたものなのですが)。
会社に入ってすぐのプログラミング研修では、「プログラムを一ステップ実行するごとに、メモリ上の値はどう変化するか」を徹底的に紙に書かされました。題材となった言語は、今ではいろいろと言われているCOBOLです。
決して楽しいとはいい難い研修でしたが、このとき教えてもらったことが、そのあといろいろな言語を学んだり使ったりしていく上で基本になったと思っています。なので、自分が教えるときも、「このプログラムのこのステップが実行されたとき、メモリ上では何が起こるのか」ということがきちんと想像できるように気をつけています。具体的には、非常に簡単なプログラムを使って、ヒープ上にどのようなオブジェクトが生成され、スタック上にどんなフレームができるのかを大きな紙に書いてもらいます。
ただ、このやり方は、プログラミング経験の少ない人には大変好評なのですが、プログラミングの経験が長い人には「わかりにくい」「理解できん」とすこぶる不評です。
プログラミング経験の長い方は、明示的にそういうことをしなくても、同様のモデルを頭の中で描いているのでしょうね。そのモデルの形式が、私の示すものと違うので、一致しないのだと思います。