プログラミング入門書を読んでプログラマについて考えたこと
すでにコラムニストの皆さまがいろいろと書かれているので、わたしがいまさら書いてもしょうがないんじゃないか感が否めないんですが高橋さんの『マンガでやさしくわかるプログラミングの基本』を読ませていただいて、ちょっと考えたことがあったので書いてみました。こういうみんなで同じネタを元にコラムを書くのって、以前エンジニアライフさんでやっていた企画「今月のお題」を思い出して、ちょっと懐かしかったです(←いい話っぽいことを書いて遅参をごまかしてみた)。
ところで、しょっぱなからダメ出しっぽくって恐縮ですが、マンガ部分がめっちゃ読みにくかったです。というのも、この本は左開きなんですが(←理工書は普通そうだよ)、わたしが普段読んでるマンガは右開きなんですよ。そんなわけで40年間絶え間なく鍛え続けてきたわたしのマンガ脳がコマを逆走するのでわけわからないことになるんですね。おかげで「一番読みやすいはずのマンガパートが一番読みにくいってどういうこと?」とぼやく羽目に(マンガ家さんはとてもご苦労されたのでは?)。
慣れってこわい。
一方、30年間こつこつと育ててきたプログラマ脳の方ではこの本に書いてあることを、「ああ、そういえばこんなこと考えてるな」と、なんだか再点検するような感じで読んでました。
こちらは無意識ではないですけど、意識的とも言い難いという微妙な感じですかね。脳内でがっつりテンプレ化されてて、こういう機能をもたせるんならこういうことが必要、みたいなことがポン!とひとかたまりで出てくる感じというか、「あいさつ」って打つと「時下ますますご清栄のこととお慶び申し上げます。平素は格別のご高配を賜り、厚く御礼申し上げます。」と変換されるような感じというか。
そういった自分の中ではあまり再確認することがない手順を言語化してつきつけられて、「自分こんなめんどくさいことやってるんだ」と愕然としてしまいました。
慣れってこわい。
この本では半分近くのページを割いて電卓アプリの開発手順を紹介していますが、ある程度慣れたプログラマなら仕様決めからテストまで1時間もあればできそうな規模のプログラムでも、きちんと説明しようとすると100ページも必要になるんですね。
読んでみると確かにそうですよ。書かれていることで不要なものなんてなにひとつありませんよ。どれも大事なステップで、それをきちんきちんと積み上げなければ、ユーザさんに便利かつ安全に使っていただけるものはつくれないんです。
ですがこの100ページ分のステップが、頭をひねることなくポン!と飛び出してくるのが、わたしにとっての「あたりまえ」になっています。
こういうことを書くと、プログラミング初心者の方は「そんなむずかしいこと無理!」と思われるのかもしれませんが、なんのことはない、こんなものはただの慣れです。ただの刷り込みです。
逆を言えば、そういったことを脳みそに刷り込む手間を惜しまなければ、プログラマになれるよ、ということです。
ただ、その手間をかけてる間にかかるストレスは、結構きついですよね。たいていの人はそこで心が折れているように見受けられます。この本のマンガパートでは、自分にプログラマは無理だとぽろぽろと涙をこぼしてしまう主人公が描かれていますが、プログラミングの習得中は多かれ少なかれこういった気持ちを抱くものなんじゃないんですかね。号泣ではなくぽろぽろ涙がこぼれる、ってところがめっちゃリアルだと思いました。主人公の気力が尽きかけてる感じが......昔を思い出して胸が痛い......けど、この主人公、かなりあっさり立ち直った!(←さすがにそこにページは割けないよね)
わたしなんか「プログラマに向いてない」って言わなくなるまでに10年ぐらいかかりましたよ!
今のわたしは電卓アプリを簡単につくれますけど、簡単につくれるようになるまでが簡単じゃなかったんです。
そんな右往左往があって、ある程度の刷り込みが完了するまでは、正直なとこおもしろいとは思ってなかったプログラミングですが、そこから先は本当に楽しいです。
テンプレ化がすすんできて余裕ができてくると、それまで考えることができなかった部分に力をそそげるようになって、それをフィードバックすることによって、テンプレを改良したり増やしたりすることができるようになって、またちょっと余力ができて、やったことのないもの、もっと深いところにあるものを探りにいくことができるようになる、という楽しい循環ができるからです。
あとがきで高橋さんが「今でも私は自分のつくったプログラムが動くと感動します」と書いていらっしゃいますが、わたしもそうなんですよ。プログラマを30年やっても「プログラムが動いてる!」ってにやにやしてしまいます。お手軽に幸せ気分になれるから、めっちゃお得です。
この本を読み終えた時に思ったのは、こういうしっかりした本を読んで、プログラミングに対する正しい理解が深まるといいなあ、ということです。
プログラマが不幸になる扱いをされる時、根底にあるものは、プログラミングに対する無理解ではないのか、と疑っているので、正しい認識が広がれば、その分プログラマが幸せになれる可能性があがるんじゃないかと期待しているからです。
幸せなプログラマが増えれば、プログラマになりたいと思う人が増えると思うし、どうせなら幸せな人たちと仕事したいもの!
コメント
仲澤@失業者
プログラマ的な脳の働き方の一つに「機能的本質の認知」とでも言えるような動きがあるように思います。
30年もプログラマをやっていると、この働きが脳の活動の大半を占めてしまいます。
例えば、「インスタンスである我が家の玄関ドアは、どの様なクラスの構成から生成されたか」などですね。
100ページではちょっと足りないかもしれません。多分。
若者に教えるために、わざと間違ったクラス派生をしてみる実験なども通勤時にやってみます。
家具屋さんが「四脚の物」クラスから「椅子」クラスや「机」を派生していた時、
ペットも販売する事になったので「犬」クラスを「四脚の物」から派生した。等ですね。
お客から「犬が吠えない」というクレームをもらったので、基本クラスの「四脚の物」に
「鳴く」というメソッドを追加したら「椅子」も鳴き始めたという・・・(^^;)。
Jitta
数年前、電卓プログラム作ったら、結構難しかったです。GUIかまさなきゃ、そうでもないけど。
キャリアコンサルタント高橋
お邪魔しますー。
書評ありがとうございます!
マンガ部が左開きになっているのは、確かに私も最初は読みづらかったです(汗
実はマンガ家さんも最初の章を描かれた時、これまでに倣って右開きで描かれており、1章分丸々描き直していただいたことがありました。。。
ちなみに、「マンガでやさしくわかる」シリーズはよく海外に翻訳されるそうで、そのとき左開きになっていると、全部右開きにコマ割りを含め書き直すんだそうです。その意味ではこの本は最初から左開きになっているので翻訳がしやすいだろうって話がありました。(話があっただけで、この本が翻訳されるかどうかは分かりませんが…)
> プログラマが不幸になる扱いをされる時、根底にあるものは、プログラミングに対する無理解ではないのか、と疑っているので、正しい認識が広がれば、その分プログラマが幸せになれる可能性があがるんじゃないかと期待しているからです。
正にその通りだと思います!
この本が正しい理解につながるかどうかは分かりませんが、その一助になれば嬉しいと思っています。