読者です 読者をやめる 読者になる 読者になる

ジーズアカデミー戦記

G's ACADEMY TOKYO でプログラムを勉強してます。もちろんブログは非公式です。

プログラミングは《やったことだけ》できるようになる

f:id:karithe:20150729205544j:plain


現在通っているG's ACADEMY TOKYOでは、講師として山崎大助さんがフロントやPHPなんかの技術解説を担当されている。山崎さんはMicrosoft MVPだとか、アパレル業界出身だとか目を引く肩書を強調されることも多いが、彼を最も正確に形容づける言葉は、"熱血"だといっておおよそ間違いない。落ち着いた口吻や佇まいが時にその熱を覆いかくしてしまうのだが、講義はさながらジーズアカデミー白熱教室の様相を呈することが常なのだ。

| 最高にシビレた言葉

もう卒業制作に入り、そんな講義ともお別れもなるのは寂しい限りなのだが、このタイミングでこれまでの講義の中で最もしびれたセリフをひとつ紹介しておきたい。それがタイトルに掲げたこの言葉だ。

 「プログラミングは《やったことだけ》ができるようになるんです」

何気ないひとことだが、とても印象に残っている。発せられた時の正確な文脈は覚えていないのだが、そのとき僕は以下のように解釈したことを記憶している。

|「 頭がいい」ことの陥穽

このようなスクールでは珍しくないことだが、ジーズアカデミーの生徒もまた「頭のいい」人が多い。幅のある言葉ではあるが、要は一流大学をでて有力企業に就職してしまうような意味で頭がいいということだ。僕はこの類の優秀さは時としてプログラミング学習の妨げになることがあるのではないかと思っている。それは彼らが一様に備えている「効率的に学習しよう」という習慣に関連する。

| 効率的?な学習

もちろん効率的に学ぶべきなのだが、「効率」の中身は問われなければならない。勉強の出来る人は一般の人と比べてそれが苦痛でない分、知識を正しく・順序よく学ぼうとし過ぎているような気がする。

例えばプログラムを始めようという際、頭のいい人はGoogleで「プログラム 学習法」なんてふうに検索する。それから一番力強い言葉でまとめられた「プログラマになるための20冊」みたいなサイトをPocketに保存する。そこでリスト化された選書を見ては順番に読み始める。時々ちょっと打ち込んでみたりなんかして動きを確認して、いまいちよくわからないなぁ…なんて思う。それでも根気強く「努力が足りない」とばかりに続けてしまう…。

悪くはないと思う、でもきっと効率がよいやり方ではない。そしてこれはかつての僕のことでもある。

| プログラムは知識か

これがイケてない理由は、よく言われることだが実践がすっぽり抜け落ちていることにある。単に本のコードを写してみるということではなく、何か自分で考えて・作ってみるという実践のことだ。認識すべきはプログラミングは学ぶべき知識ではなく習得すべき技芸だということで、本だけ読んでもできるようにはならない。

むしろ知識習得という面でも時に効率が悪い。プログラミングは新しい概念を学ぶので、どうしても言葉で説明すると抽象的で難しくなってしまう。ところが一度手を動かすと「え、それだけ?」と案外スムーズにいくということがままある。

この点からも"できるようになる"ためには、まずやらなければならないのだ。

| レベル上げは一度忘れる

さらにもうひとつ。はてな なんかはプログラミングスキルに指標をもうけているようだけども、初心者の間はこういう目線を一回忘れたほうがいいかなと思っている。

Webアプリケーションエンジニア職 募集要項 - 株式会社はてな

 それはあまりにこの界隈の知識が広くとりとめがないため、いつまでも「お勉強」をしていると必要な知識にたどりつけないからだ。もしAさんが作りたいと思っているサービスにライブラリαが必要ならそれを使ってみるべきだ。もしBさんがWebAPIβが必要とするなら、そのマニュアルを読むべきだ。勉強してプログラミングレベルをあげるといつか勝手にライブラリやWebAPIが使える自分になれるなんてことはない、たぶん。もしかするとそれらの理解速度はかなり早まるかもしれない、が(何かを作りたいと思っている人の)ゴールからみて決して効率的ではないのではないか。

| 初心者のその先へ

プログラマーの生活には「準備不足感」が付き物だ(中略)絶えず自分の不慣れな分野に踏み込んでいかねばならない。自分がバカに思えるという状態に慣れておく必要がある。

「プログラミングは簡単に学べる」なんてことはない―女性CTOが体験からのアドバイス | TechCrunch Japan

プログラムをするということは、きっとこういうマインドを持つことでもある。それは効率志向とはいささか縁遠いものだ。「お勉強」をしてしまうと、これまで述べたようにスキルをあげる上でも自分の作りたいプロダクトにたどり着くためにも遠回りになってしまう。それをシンプルに表現したのが最初に述べた山崎さんの言葉だと思ってる。

つまり「勉強に逃げてないでコードかけ」と。

もちろん、これは初心者向けの話であってある程度成長したら信頼のおける本をじっくり読んでレベルをあげていかなければならないのだろうとは思う。ネットでよくある出来る人による「本を読むべき」という記事はきっとそういう視点でものを言っていて、初心者がそれを過剰にリスペクトして間違ったタイミングで実践しているだけの話ともいえる。そう考えれば、初心者を抜けだした後のスクールの同期生が楽しみでもある。

| 3期生募集中

講師を誰がやるのかはわからないが、3期生を募集しているようだ。正直いってこのエントリで述べたことは頭では昔からわかっていたことだ。それを山崎さんの言葉で言い換えたにすぎない。でも言葉の本質的な理解度はその前後で全く違っている。だからもし「わかりきったことを(笑)」と思いつつもなお燻ってる人がいたなら、熱に感染するために説明会に行ってみるのもアリだと思う。

gsacademy.tokyo

読者が少ないのであれだが、いちおうオススメしておく。