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

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

俺流プログラミング学習方法

雑記

プロ・アマ・プログラミング言語を問わずに今までの4倍のスピードで学習する方法
http://d.hatena.ne.jp/Craftworks/20090716/1247742109


気になったのでざっくり目を通してみたのだけど、「4倍でなんて100%無理だろ!」ってよく見たら「4倍のスピードで学習する方法」であって「4倍のスピードで身につく方法」ではないのか!思いっきり釣られた!


まあせっかくなので釣られ記念に、僕がプログラミングを学習するために(主にAS2/3)、ここ2年くらい実践してきたことを書いてみます。ちなみに当方「エンジニア」という肩書きでは経験半年のへタレです。しかもナナロク世代にも入れなかった負け組ロスジェネ世代ど真ん中の男です。(最初の職業は土木作業員だったのに、30も半ばになってからプログラマー/エンジニアという肩書きになるとは10年前の自分は全く想像してなかった…)。学生の頃に多少のプログラミングの経験は会ったけどBasic止まりでした。仕事としてFlashLite触っていた時期は長いけど、実際プログラミングと呼べるようなレベルではないし。配列も関数も使えないのようなのがプログラミングなものか!!!!

コードを書く・動作確認する

少なくとも自分にはこれ以上の勉強方法は無いなあ。ここでもちょろちょろとデザインパターンの実装練習をやったりして一時期はアホみたいにコード書いてました。どこでもコード書けるようにするために作業環境を完全にデスクトップPCからノートに乗り換えました。24インチ液晶モニタは誇りまみれです…。

やっぱりコード読むだけでは身につかない。クラスが増えてくると処理の流れが掴めないし、複雑に絡み合ってくると変数の値をトレースしながら追いかけないと、僕は理解できなかったです。

あと意外とEclipseやFlashならFlashDevelopなどのツールの使い方を身につけるのが重要だったりします。こればっかりはソフト触らないことには始まらない。

本を読む

やっぱり一番の近道かなあと思います。本が良いのは「持ち歩けること」です。ノートPCでもいいんですけど、可読性や携帯性はPCよりいいかな。けど技術書ってでかくて重いものばっかりw僕は普段なかなか読む暇がないので、もっぱら移動中に持ち歩いて読んでます。3〜4冊くらい同時に持ち歩いて死にそうになったりしてます。

読み方としてはまず最初は最後まで読みます。内容が分かって無くても最後まで読みます。コードが絵にしか思えなくても読みます。とりあえず何が書いてあるかは把握する。2回目以降で改めて細部を読み直したり、分からないところは動作確認してみたり、繰り返し読みます。

読む本も言語専門書だけでなく、いろいろ読むのをオススメします。自分の場合ですが、AS2/3を勉強するのに「初めての〜」みたいな初心者向けの本をひたすら読んでも全然理解出来てなかったのが、リファクタリング絡みの本やデザインパターンの本を読んで一気に理解できたような気がしてます。結局基本を身につけるのが一番の近道じゃないでしょうかね。


Java言語で学ぶリファクタリング入門
結城 浩
ソフトバンク クリエイティブ
売り上げランキング: 95058

僕はこれを読んで開眼した気になりました。

ネットから実例やリファレンスできるものをまとめておいて後で活用

上のリンクでも紹介していたものとも繋がりがありますが、ブログは実践的な話題が多いと思うので、そこは非常に便利なところです。僕はブログで「こうやったら問題解決できた」というようなものを日ごろからブックマークしておいて、分からないときは貯めたブクマから検索して調べたりします。FlashLite1.1を触りまくってた頃は、業務で役立てるような情報はあまりなく、情報自体少なかったりしたのでこの日記に異常に貯め込んでデータベース代りに使ってました。

師匠を見つける

「メンター」って奴ですかね。自分より出来る人を見つけて弟子入りします。別に当人に「弟子入りさせてください」言わなくても良くて、勝手に心の中で弟子入りするだけでいいかと。僕も面と向かって言うのはアレなので、勝手に弟子気分になってます。

わからないことを聞ける人がいるというのは非常に便利です。具体的なコーディングのことも聞けるし「どうやったら身につきますかね?」などプログラマー/エンジニアとしての考え方も聞けるし。僕自身、今の仕事場でも「鉄人」みたいな人たちが多いので非常に影響を受けまくっています。業務上の経験でスキルを身につけてる人の「生きた」知識に直接触れられることには、良書を何十冊集めても、ブログを何千エントリと読んでも勝てないです。学生のときもそうだったと思うのですが、「勉強は出来る奴に聞いた方が早い」「出来る奴のノート借りた方がテストで良い点取れる」理論ですw

僕は有り難いことにに師匠クラスの人たちが周りにいるのですが、そうでない場合はネットで出来る人を見つけてきて、勉強会とか参加したりしてうまいことコミュニケーション取れるところまでもっていけたらいいのかなあ。

学習をやめない

身も蓋もないけどこれが一番だと思う。やっぱりいきなり出来るようにはならないですよ。僕なんて年とって頭の回転も悪くなってるわけで、全然身につかない。本気でプログラミングを学ぼうと思ったときには30歳を余裕で過ぎてましたw。おまけに集中して学べる時間もない。オブジェクト指向なら継承の意味を理解するのに3年くらいかかってます。「4倍のスピードで学習」とか夢物語だよw

量が質に転化する、って誰が言ってたのか忘れましたけど、ペースの速度関係無しに確実に実戦して積み重ねて続けるのが一番の近道なのを実感してます。ネットを使うこと自体が学習スピードを既に10倍速(当社比)にしてくれてるはずなので、あとは本人のペース次第ではないでしょうか。本もたくさんあるし、ネットもあるしね。

それと勉強会とかについて。一時期、参加してみたり実際にやってましたけど、今振り返ると参加しただけで「やった感」が持ててしまい、非常に危険な感じになりましたので、今は自重中です。やるからには得るもの得て生産性高められないと、参加する意味はないですね。

今後の課題

  • 時間が無い

言い訳第一位です。冷静に考えると余計な時間たくさんある…2ch系まとめブログとかいい加減みるのやめたい。あとtwitterとかもホントどうでもいい情報が多いし、うまく付き合う努力していきたいところです。この本読んで気がつきました。


ウェブはバカと暇人のもの (光文社新書)
中川淳一郎
光文社
売り上げランキング: 225

ネットの見過ぎに注意。

  • 物覚えが悪い

流行の脳生理学の本でももっと読んでみるか。時間掛かるのは承知でコツコツやるしかないなあ。



意外と参考になります。馬鹿と脳味噌は使い様。

  • 一つを極めるかそれとも水平展開するか

今はFlashメインでやらさせてもらってます。あとiPhoneをちまちまとやってます。本当はperlphpruby(+dbな環境)にもトライしてみたいし、全く基本が出来てないのでC/C++もきちんと学びたい気持ちもあるけど、どう考えても手が回らない。複数言語できる人たちがうらやましいです。簡単なレベルでいいのでやれるようになりたいなあ…「10日できる〜」本とか手にとって一度ガッツリトライしようかしら。

まとめ

学習に早いも遅いもない。使えるものは何でも使って(ネット/本/人)、コードを書くことと向き合う時間を増やすことが一番。


Shut the fuck up and write some code.