本エントリーについて
このエントリーは、ただのメモです。情報収集をしていて、「この方法いいかも」と思うことが多いのですが、メモるほどでもなかったりします。そんなものを保存しておいて、後で読み返し洗練していければいいなと思います。
※プログラミングの上達のためにメモっているので、そっちの方の記事が多いです
メソッドの前に
方法論は基本となるポイントを抑えた上で実践するものだと思うので、最初に勉強をする際に大切だなと思うことを書く。
- とにかく続ける
継続、習慣は最強だと思う。
惰翻 - あなたを奮い立たせる100の名台詞
人は何を繰り返すかで決まる。優秀とは、ゆえに行動ではなく習慣なのである - Aristotle
ちょっぴり同族嫌悪!? - 書評 - 本は10冊同時に読め!
庶民から脱出するために本を読んでいたのではなく、本を読んでいたら庶民でなくなっていた、というのが真相なのだ。
苦手とか得意とか言う前に、続けることが大切。
子供の習い事なんてこれだ。僕は運動は苦手だったが、小学校から高校までやっていた水泳は高いレベルだったと思う。まさに、やっていたらいつのまにか少しはできるようになっていたということだ。
- 自分で考える
これはメソッドというより、ポイントか。当たり前じゃんと思いつつも、これができる人が少ない(特に日本には)と言われているのも事実。なので最初に書く。
学校での勉強は、「記憶」と言えると思う。大学までの試験や多くの資格の試験もこのカテゴリに収まる。ここで問われるのは「考える力」ではなく、「どれだけの方法、答えを知っているか」。歴史の問題は知っていれば解ける。数学の問題も回答方法を知っていれば解ける。つまり、ほとんど「考える」ということを必要としない。
一方、本当に大切な勉強は「思考(ということにしよう)」であり、「考える」ことに重点を置く。企画や研究などはこのカテゴリだろう。未知のことに対して、「自分で仮説を立て」、それが正しいかどうかを調査、実行によって確かめる。
この2つには決定的な違いがある。それは、情報の使い方。前者は情報を記憶の対象として、後者は、自分の仮説の検証として使う。
PCという(ほぼ)無限の外部記憶があり、しかも検索できることを考えると、前者の勉強はほとんど役に立たない。何故なら、勉強の目的は問題解決や制約を取っ払うことであるからだ。問題解決する際には、テストと違ってPCを使うことが出来る。つまり、覚えていないこと、知らないことは検索することができる。記憶している必要はない。必要なのは、調べた結果から問題を解決する方法をひねり出す力。この力(思考力)を育むトレーニングを勉強といった方がいい。
「勉強≠記憶」、「勉強=ある問題に対する理解を深めるために経たプロセス」
長分になってしまっている。まだ自分の中でも整理しきれてない。要するにこういうが勉強だと思う。
- 知識構造を意識する
専門知識」にはたいてい「土台となる基本構造」があり、その上に「特定の目的に沿って組み立てられた応用形」があるものです。ところが、「基本構造」のほうは素人がイメージしにくいことが多いうえに、実際の現場で表面上使われる知識は「応用形」が中心であることが多いため、初心者向けの教育ではついつい「基本構造」を省略して「応用形」だけを教えたくなります。しかしそれでは「変化に弱い」知識しか身につきません。
そう。知識は構造化できる。自分が知識を吸収しているときも、「これは基礎か応用か」を意識した方がいい。基礎なら、これを使った応用は何かという疑問がでてくるし、応用なら、この基になっている考え方は何かと考えることができる。
そうすれば、この2つの基礎をつかってこんなことができる。とか、この技術は本質的には2つの基本技術からなりたっているなと考えることができる。情報が整理できれば、記憶効率も上がると思う。
勉強法メソッド一覧
- 過去の雑誌の連載を読み返す
001 年から UNIX USER で連載されていた西田亙さんの「gccプログラミング工房」。いまさらながら、バックナンバーを取り寄せて初回から順番に読んでいます。とてもためになる連載です。
この連載中で第10回から数回に分けて開発されていた octopus という 8 ビット CPU の仮想機械があります・・・
例えばRuby学ぶ人なら「るびま」とか読むのはいい勉強になるよなー。最新の動向を掴むのも大切だが、やっぱり「基本」が大切だろう。その技術がどのように作られたのか、またどのように進化してきたかも知っていると、対象技術に関する知識がずっと深まると思う。
- 新着順で並ぶようなキーワード検索を使う(Google Alertとかでも良いかも)
一応、私は、1年半以上、はてなのキーワード検索で毎日Railsについては調べているので、はてなでRailsについて書いている人の記事はたいてい見ています。
なるほど。これはやっていない方法だった。
- 手本を読む
「卒論話のついでにこれから卒論を書く人へ勝手に偉そうなアドバイス(一部言語系限定)」
僕から言えることは一つ、
とにかく論文たくさん読んでください。
これだけです。後の細かいことは先生や先輩に聞いてください。
何か新しいことをマスターする際には、上手な人をお手本にするのが最も効果的だ。これは何もビジネスに限ったことではなく、スポーツ、芸術、ゲームのプレイに至るまで、何においてもあてはまる原則と言えるだろう。
これはやっぱり大切だろうな。優れたハッカーはコードを読むし、優れた音楽家は、それだけ音楽を聴いているし。
「愚者は経験に学び、賢者は歴史に学ぶ(ビスマルク)」にもあるけど、過去という遺産の恩恵を十分に活用すべきだなと思う。
- どんどん試す(手を動かす)
これはblogに関しても同様、というより職務とは関係がない関連技術を習得するのにも、blogは最高の道具です。それが職務を広げることにもつながります。id:higeponなんか、その典型的な例ですね。2chでOSづくりを学んで、はてなダイアリーでschemeを学んで....はてなでは何を学んでたんでしょうか(笑)。
それで、この本でぼくが実行したのは外国語書籍の1日1冊主義。
原書を右手におき、翻訳書を左手において左の翻訳書を1ページ読んでから、右の原書を1ページ読む、辞書は使わない。わからないところはとばす。
これを愚直にも1年間続けました。速読法というより、とにかく根性で読むといった感じ。1年後には桁違いに速く読めるようになりました。
できるプログラマーって本で勉強した人って少ない気がします。それより手を動かす。Webに載っているコードを読む。そして、コピーして、いろんな所をいじってみる。で、失敗したりして、「あぁーこう動いてるのか」って納得する。
そういう勉強(本人達は勉強とは思ってないっぽい)をしている人が、特に若い世代に多いと思います。読んだだけで試さない人も結構多いのではないか。
できる人ほどすぐ試す。APIが公開された日にそのAPIを使った簡易アプリなどを公開する人はほぼ一流だと思う。
- 恥を恐れず晒す(人にみてもらう、フィードバックをもらう)
自分の Scheme のレベルが初心者以下だということは分かっています><
でも、晒す事が大事。
このイベントが終わってションボリしていたとしても、それはきっと将来の自分の役には立っているんだと思うんだ><
このエントリーは勉強法というか、プラクティス集みたいになってしまった。が、まあいいや。成長する目的からはずれてない。
(学歴的)優秀者には、晒さない人が多いかも(?)もちろん、得意分野は晒しまくるだろうが、苦手分野を晒して、ションボリするなどその人達にはできそうにない。また、こんなこといったら見当外れだと思われるから分かったフリをしてしまうのも最悪。
とにかく発する。考えていることの整理にもなるし、なにより、何が分からないのか(=何を調べればいいのか)がはっきりする。で、分かるまで考えればいい。見当外れでも、自分で調べた結果の答えを出そう。答えがおかしかったら、誰かが指摘してくれる。
とても大切な気がする。
- 投資のための時間を確保する
荘司雅彦にしろ、勝間和代にしろ、藤沢晃治にしろ、生産性の高い彼らに共通していることが一つある。そしてそのことは、仕事ができる人の意外な特徴ランキング - goo ランキングを見てわかるとおり、皆うすうす気がついている。
金作りに優先して、暇作りをしていることである。
暇というのは、「時間が空いている」ということではない。配るべき心の余裕がある、ということである。彼らの成功サイクルは、以下のとおりである。
今週末は2つの勉強会に参加・発表させていただきました!
ステキな発表の場を設けていただいてありがとうございます!!
以前、「夢に日付を」渡邉美樹著を読んでいたら、次のようなことが書かれていた。
「予定を組む中での中で最も大切なのは、緊急じゃないけど大切なことだ。緊急で大切なことに追われている以上、現状維持以上のものは望めない」
やはり、投資のための時間は確実に確保しなくてはならない。週末の勉強会とか良例かな。
- ネットでも勉強はできる
「α変換 β変換」
いやー。名前だけ聞いたらものすごい難しそうで避けて通ってたけど勉強してみたら以外に当たり前のことだった。
Wikipedia でお勉強
当たり前といえば当たり前。しかし、ネットは検索(=調査)のみに使って、勉強に使うことはない(そういう発想がない)という人は案外多い気がする。そういう人は、勉強のツールとして「本」を使う(というか、勉強=本という束縛から抜け出せない)。
本と比較して、ネットで勉強するメリットは多いと思う。まず、情報が最新であること。さらに、情報が不完全であること。これはデメリットともとれるが、不完全であるがゆえに、自分で考える機会が増える。本は整理されているがゆえに、「なるほどこういうことか」と鵜呑みにしてしまい、自分で考えるということが少ないのではと思う。また、同じことに関する情報が大量にある。このおかげで、1つのことを沢山の視点から理解することができる。最後に、分からないことは直に調べられたり、その場で試したり出来る。これによって体験的に理解することが出来る。
最近、勉強はネットでやって、本はほとんど読まないという人も多い。この方法を上手くやっている人は、梅田さんの言う「高速道路」を走っている人なのだろう。
- まとめ系記事
勉強が出来ない奴はプログラマになれ!(バカだからできる勉強法)
「Re:我々全員の知的生産性を10桁上げる方法」
「遅延評価的勉強法」
「私の言語遅延学習法 - 三つのルール+1(Dan Kogai)」
「新しくプログラミング言語を覚えたいときに行うべき10の練習問題」
- 先人から学ぶ