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

ジーズアカデミー戦記

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

プログラミング初学者における泥臭さのはなし

G's ACADEMY

怪物

先日の勉強会のLTの中で一際注目を集めた発表者がいた。

「30代後半からはじめてもプログラムはできる」といった趣旨の内容で思わず胸が熱くなった。その人は今年のはじめ求職者支援訓練でJavaScriptに出会ったらしい。聞けばこれまでWeb系の仕事についていたわけでもなく、その時既に30代後半だったという。そこから約半年の間にドットインストールにあったサンプルゲームカスタマイズに始まり、オセロ・じゃんけん・タイピング・シューティング・将棋・花札ブラックジャックなどを次々と制作、先日デザイナーとして企業採用が決まったそうだ。

さらにその途中でこの春から始まったジーズアカデミーというエンジニア養成学校に応募し合格・入学しているのだから、プログラムを始めたばかりというには情報感度も普通ではない。そしてスクールで毎週の課題として彼が作ってくるものも衝撃的なものばかりだった。課題の内容を超越したものを作ってきては更に別のアプリケーションを作ってくるというようなことも何度もあった。そんな彼を一部からは「怪物なんじゃないか」と呼ぶむきもあった。もちろん120%の褒め言葉だ。

G's ACADEMYの見学に行ってきました | Milkcocoa Engineers' Blog

"凄み"の正体

一方で僕には彼から怪物とまで呼称されるような隔絶した才気のようなものは感じられずにいた。だから彼が発している他の生徒とは違う"凄み"の正体はいったい何なのか、その答えをずっと出せずにいた。ところが先日本人と少し話してコードを見せてもらったときにその輪郭が見えた気がした。

それは「泥臭さ」とでも言えるものだった。

偶然かもしれないが、彼のコードはそれほどオーガナイズされているわけでもなく、決して読みやすいとはいえない強引さがみえた。ちょっと実装で悩んでいるという流れで見せてもらったものでもあるので差し引いてみるべきだし、僕もそんなに詳しいわけではないので断定はできない。でもスクールの勉強の中ではあまり見ない質のものであったことは確かだった。そしてそれこそが彼の優秀性を示すものでもあると思うのだ。

プログラミング学習の2つのベクトル

最近思うのは、プログラミングを学ぶときには最低でも2つのベクトルで学んだほうが良さそうだということだ。まずひとつはテクノロジーの仕組み・使い方を学ぶということ。たとえばGoogleAPIはどう使うか、PHPからどうやってMySQLをつかってデータを取得するかといったことでこれはジーズアカデミーでもそうだし、書籍やチュートリアルサイト、ドットインストールなどのオンライン学習教材なんかも大体はこれだ。

もうひとつはでっちあげる能力というか体力とでもいえばいいのか、現実の仕事はおろか個人で開発をする上でも、学んだ基礎知識で切り貼りすればプログラムができてしまうなんてことはまずない。たぶん。見難くても大量のコードをかかなけらばならないケースはでてくるだろうし、強引にデータの構成を変えたりとかキレイとは程遠いコードを書かなければならないシーンだってでてくるだろう。そういうのを泥臭くとも作り上げる能力の向上だ。

後者のほうは実践を通さないとなかなか鍛えあげることが難しいと思っている。例えばジーズアカデミーでは課題としてMinimum Requirementsが提示されるが、それ以上は各自が工夫してくるようにという指示だ。これだとハマったり面倒なことに出くわすと本人の裁量によってそれを避けたり、簡単なやり方を採用してしまうことになりやすい。それで許される場合はむしろ正しい選択かもしれないが要件が変更できない場合だってあるはずだ。

いかにタフネスを身につけるか

LTの彼には後者の力が備わっているのだと思う。スマートでなくとも考えて試して実現するタフネスとでもいえる能力。最初にあげたゲームについて、"単純なもの"と本人は謙遜していたがコンピュータ対戦のアルゴリズムまで作りこまれているのだ。またその多くはライブラリを使わず生JSで書いたという。これを繰り返した結果「できるという自信」を身につけていったものと推測している。もしかすると「誰もが知っているゲーム」から取り組んだのがよかったのかもしれない。これだと自分の実装能力にあわせてルールを変更できないものだからだ。

いずれにせよ、個人で勉強しているとなかなかこういうところまで手が回らないもので、とても参考になった。