プログラミングとは恋に落ちるべきだ 〜処女信仰と「プログラミングはどの言語から勉強すればいいですか?」は同じ〜
さて、久しくブログも更新してないんだけど、
更新してみようと思い、なんか書こう。
最近、こんな記事を読んだ。
プログラミングを勉強したい人が勉強する前にすべきこと
プログラミングはそれ自体が目的であっていい
ふむふむ、よくある「プログラミング論」だなーと思っていただけだったんだけど、
あまりこだわりがなくなりすぎるとブログも書けなくなってしまうので、
プログラミングについて書こうと思う。
プログラミングに触れる人のきっかけは様々だ。
学校で受動的に教わる人、自分から学ぼうと思い本屋さんに行く人、仕事で必要になった人、などなど。
まずその最初のきっかけでプログラミングに対する印象は大きく変わるだろう。
プログラミングを語るためには「軸」が必要。
だって、学校でしゃーなしで勉強してる人のプログラミングと、第一線のソシャゲーやSNSでゴリゴリ書いてる人のプログラミングを比べるわけにはいかないでしょ。
おそらくウェブ上で多く話題になるプログラミングの「軸」は、
プログラミング未経験者がプログラミングを始めたい、どうすればよいか
ということだ。
そして、冒頭で紹介した2記事を見てみる。
もとまかさん→とりあえず何か作り始めてみる
それに対して、
@mizchiさん→プログラミング自体が目的であってもいい
ふむ。。。。。
どっちでもいいや、というのはとりあえずなしにして(笑)、
考えてみよう。
どっちの言うこともわかるし、どっちもお互いの言い分はわかってらっしゃるでしょう。
ぼくもその上でなにか話そうかな−と。
まず、プログラミング初心者にとってのプログラミングについて。
「どの言語からやればいいですか?」
よくある質問だ。
パジャマは左足からいれればいいですか、それとも右足からですか?というのと同じくらいの感覚を受ける。
難しい質問だ。
何回も質問されたことがある。
そのたびに回答がちがうかもしれない。
なのでこの場で脈絡もなく考えよう。
質問者にはパターンがある
1,作りたいものが明確にある
2,なんとなく作りたいものはあるが、そもそもプログラミングでなにができるかわからない
3,作りたいものは特に無いが、なにか作れるようになりたい
1については比較的簡単だ。
SNSをつくるならぼくはPHPを勧めるし(またPHP嫌いからなにか言われそう。。。)、
ウェブサイト含めてマークアップ言語ではあるがHTMLやCSSをもちろん教える。
iPhoneアプリならObjective-C、アンドロイドならJAVA、他にもいちおうJavascriptでできるなんちゃらにうむだって教える。
正直、この部類に苦労することはあまりない。
2については、どちらかというと賢い人に多い。
自分がしようとしてることが全体のどこにあたるのか、まず全体像を把握したがる。
その上で自分の立ち位置を決めるパターン。
難しい、とても難しいよ。。。
だって、さっきSNSをつくるならって言ったけど、たとえばPHPじゃなくてRubyでだってPerlでだってPythonでだってできるもん。
もはやスクリプト言語じゃなくたって、、、とか言い始めると無限になってしまう。。。
このタイプの人にはこう言おう。
「自分が指を動かす動作を、きちんと人に説明出来ますか?」
のように。
プログラマーだって、すべての言語を知っているわけではなく、そのすべてを把握し昇華しようものなら一生かかってしまう。
つまり、金をもらってパフォーマンスを出してるプログラマーだってすべてを知っているわけではない。
2のパターンの人はきっと勉強熱心だ。すばらしい。しかしプログラミングの世界では勉強熱心すぎることは世の中で動くプログラムを出すという意味ではマイナスかもしれない。完璧はないからだ。
本屋のプログラミングコーナーに行って、最初に目についた本を買いましょう!というのもありかもね。
3のパターンについて。
つくりたいものもないけど、プログラミングに興味を持ってしまったパターン。
これはけっこう近くの人がきっかけだったりする。
つまり、恋人がプログラマー、親がプログラマー、友達がプログラマー、的な感じ。
この部類についてはそっとしておきましょう、ほっときましょう。
プログラミングは人が教えたからといってできるようになるものではなく、
あくまでも補助にしかならない。
3のパターンの人については、2のパターンになるのを待ってから、
2のパターンを施し、1のパターンに持っていきたいところだ。
さて、ここからが本当はぼくが一番気になるところだ。
なぜ、「最初の」言語にこだわるのかということだ。
なんでもいいから少し気になったものを勉強し始めればいいのに、と思う人はきっといるはず。
ここには「処女信仰」のようなものも感じる。
自分が最初にする人なんだから、のような。
あなたが男なら「童貞信仰」だろう。
最初は風俗じゃやだ、のような。
ここには「人間性」が関係していると思う。
「プログラミングはどの言語から勉強すればいいですか?」
この質問をする人は「効率性」や「リターン」を期待している。
どうせ勉強するなら、有意義な言語のほうが良いと、無駄な勉強はしたくないと、本当はそう思っている。
はてさて、この感覚どこかで、、、と思ったら、そう、
恋愛
だ。
恋に臆病な人は、本当に相手が大丈夫な人かどうか、この人と付き合っていけるか、
相手は自分のことをどう思っているのだろうか、
いろんなことが気になって、一歩がなかなか踏み出せない。
一方、恋に落ちやすい人もいて、それなりにフィーリングがあえば付き合う人もいる。
そう、プログラミングはこんな感じだ。
最初にどの言語かを異常にこだわってる人の中には、きっと恋愛でも本当にこいつといると楽しいか、
見返りがあるか、効率的か(つまり結婚まで視野にできて若い時代を無駄にしないか)を考える人が
いるんじゃないだろうか、冗談だけど冗談じゃない。
はっきり言おう、
プログラミングと恋に落ちてしまおう、まるで青春時代のように。
あなたは若いかもしれないし、老けてるかもしれないがそんなことはどうでもいい、
あの頃何も見返りを求めず好きになったあの感覚を、プログラミングにも持てばいいんだ。
最初にR言語を勉強したとしよう、D言語を勉強したとしよう、
なんてディープな始まりかたなんだ!
どうでもいい知られてもいない言語を仮に勉強してしまったとしよう、
いいじゃないか!
おれのプログラミングのはじまりは、まるで風俗で童貞を捨てたようだったと、
高らかに叫ぼう!
人の恋のはじまりに誰もとやかく言えないよ、
だって恋には落ちてしまうものだから。
恋に効率性なんてない、
プログラミングにも、恋愛してほしい。
痛い思いもするだろうが、感動することだってある。
乗り換えることもあるだろう(笑)。
それでいいんだよ、それが人生だ。
最後に、また改めて言おう、
プログラミングに恋しよう