Category Archives: Lifehacks

どうすれば物事を習得することができるのか

  2chのスレッド「プログラム挫折経験ある人、どうやって克服した?」より。 これはプログラミングを題材にしているだが、学び全般に言える気がするのが、「習得方法は、人によって異なる」ということ。 このスレでも 先ず概念をしっかり理解する。その後、やっと実践に入る。 とにかく先ず手を動かし、実践する。写経する。そうすると、次第に概念も理解できるようになる。 中間。概念の理解が必要であれば、概念を理解。手を動かす必要があれば、手を動かす。   などあるようだが、これは一概にどの手法が優れている、というものではないだろう。人によってベターなやり方は異なるので、自分の性格や特性を見極めて、勉強方法を選択することが肝要である。 私の場合は、完全に「先ず手を動かす」タイプ。概念から入ると、眠くてしょうがない。 昔、バーバラ・ミントの「考える技術・書く技術」を読んだ時も、訳本は眠くて眠くて死にそうだったが、ワークブックの方は、楽しみながら読むことができた。 以下、相当古いスレッドの情報だが、今読んでもなるほどと思わせられる。 136 :デフォルトの名無しさん:2006/09/29(金) 15:46:23 オブジェクト指向の理解からはじめなさい 専門書を10冊は読め、プログラミングなんてその後だ 137 :デフォルトの名無しさん:2006/09/29(金) 17:11:11 > 専門書を10冊は読め、プログラミングなんてその後だ 俺は逆だった。 テキストや入門サイトとかに掲載されているサンプルを打ち込んで、 いわば「体で覚える」こと。とにかく徹底的に実践してから、ある 程度覚えたらその技術的な背景や詳細を専門書で身につけた。 ちなみに俺は今Haskellを「体で」覚えている最中だ。 まあ言語の習得は人によって向き不向きがあるから>>136の方が向いている人もいるんだろうが。 138 :デフォルトの名無しさん:2006/09/29(金) 17:41:05 >>137 その「体で覚える」ってのは、具体的にどういうのでしょうか? 手を動かして実際に手で打ち込むのは分かるのですが、 サンプル通りに一切の変更もなくそのまま、ってことですか? 139 :デフォルトの名無しさん:2006/09/29(金) 22:37:12 まず予習。打ち込む前にサンプルを読む。一行一行意味を確認しながら丁寧に読むこと。 理解できない場所は、俺の経験上いくら考えても埒があかないからとりあえずとばす。 次に実践。コピペとか横着せずに自分の手で打ち込む。 ただ機械的に丸写しするのではなく意味を意識しながら打ち込むこと。 慣れないうちは、忘れてしまっても見直したときにわかるよう逐一コメントを 付け加えておくのもいい。完成したら動かしてみて、ささやかな充実感を味わおう。 デバッガがあれば復習もできる。 たいていのデバッガにはプログラムを一行だけ実行したあと一時停止する ステップ実行という機能がある。プログラムの動作を一行ずつリアルタイムで 追うことができるので、予習や実践の段階でわからなかった箇所も理解できる ようになることもある。おおいに学習の助けになるはずだ。 140 :デフォルトの名無しさん:2006/09/29(金) 22:44:42 確かに体使った後に、参考書とか見て確認したりすると 理解度が高い木がするな。 141 :デフォルトの名無しさん:2006/09/29(金) 23:20:02 >>139 それは体育会系のようで、すばらしい! 汗かいた後に飲む、牛乳はうまい! 143 :デフォルトの名無しさん:2006/09/30(土) 03:13:00 確かに、既にある言語をマスターしていて、その言語で新しい分野の プログラミングに挑戦したいという場合はコピペでも全然構わないと思う。 それは言語の習得が目的ではないから。 でも新しい言語に挑戦するときは自分の手で打ち込むべき。 サンプルコードと未完成のコードを適当なスパンをおいて交互に目で追い ながら打ち込むので、より狭い範囲に視野をとどめることができる。文法上の 細かい事項は、読んだだけでは見落としがちだからね。 俺の実際の経験としていくつか例を挙げると、C言語のenumの区切り文字は セミコロン(;)ではなくコンマ(,)だったことを見落としてた。structは セミコロンのくせに。元々JavaやっててC++に挑戦したとき、クラスの定義の 最後にセミコロンが必要なことに気づかなかった。などなど。 > むしろ、コードを少しずつ書き換えて、実行の様子の違いを比較することに時間を使うべし。 書くの忘れてた。実践の一環にはこれも必要だね。 394 :デフォルトの名無しさん:2007/06/02(土) 04:31:49 >>391 なんかアプローチ間違ってる様に見える 分厚い本を読んで苦行の様に勉強してプログラム書ける様になった香具師は、 プログラマ全体からみたら少ない方じゃねーかな? つーかそれじゃ、プログラミングという行為が楽しくならんだろ? 上でも出てたけどさ、プログラム組める香具師は好きでやってることがおおいのさ 俺だって自分でこんなツールが欲しいと思って、試行錯誤でコード書き始めたのが最初だし、 何かやりたいことを見つけて、そこから調べて学んで行くと、ものになりやすいと思うよ

「自分には才能がない」と考える前に

  仕事で壁にぶつかったり、自分の能力に対する自信を失くしてしまった時、自分には才能がない」「自分には能力がない」と考えるのはある意味楽だ。 試合放棄して、楽な方向に逃げてしまえるのだから。 だが、そう考える前に先ずやることがある。 もちろん私自身も、MITではものすごく勉強した。授業が終わると、明け方の四時まで机に向かい、それからわずかに仮眠をとって、翌日の授業に出るというのが当たり前だった。週末に寝だめするしかないくらいに、それはきついものだった。正直いって、成功したいというよりも失敗して帰るわけにはいかない、というところから根性が生まれていたように思う。 即戦力の磨き方 – 大前研一 コンサルティング・グールー大前研一だって、日々食っちゃ寝の生活をしてマッキンゼーのトップになったわけではないはず。成功する人間は、若い頃それこそ死に物狂いで努力する期間があるんじゃないか。地頭の違いを言い訳にするのは簡単だが、先ずは自分なりに努力してみるべきだ。 僕はそれまで、「自分には才能がない」と思っていたんです。ずっと後で分かったことなんですけど、それは才能のあるなしではなくて、別のものだったんです。 僕には「引き出し」がなかったんですね。 「天才だ!」と僕が思った人たちは、入社する前からアニメや漫画が好きで、アニメに対する素養があったのに、僕にはそういう引き出しがなかった。引き出しもなくて努力もしないで、いきなり彼らと伍そうと思った。入社してすぐに「あいつらは才能がある、俺にはない」という仕分けをしちゃって。それは大きな間違いで。 才能ではなく、引き出しの違いというのに気がつくのに、ずいぶんかかりました。 「まわりが“天才だらけ”の中で、どう生き延びる?」(高橋良輔インタビュー、日経NBOnline) 優秀な人間に囲まれていると、自分が役立たずで何の役にも立たない惨めな人間のように感じる時もあるけど、冷静にならなくてはならない。落ち込んでいる暇があったら、「引き出し」を増やす努力を必死ですべきだ。 優れたハッカーに出会うと、「この人には敵わない」「このようなコードは書けない」と感じることがあります。 その皮膚感覚自体は正しいと思いますが、それは「現時点では」という条件付きであることを認識することが大切です。 現時点でどれくらい実力に差(開き)があり、どうすればをそれを埋められるかをきちんと分析することを心がけましょう。 経験上自分の実力が低いうちは、とかく周りがすごく見えてしまいますが、それは間違いであることが多いです。 天と地ほどの差があり一生追いつけないと思っていても、後になればせいぜい数十メートルの差だったなんてことは良くあります。 僕の場合、「インタプリタ書ける人は別世界の人だ、自分には絶対書けない」とずっと思っていましたが「計算機プログラムの構造と解釈*1」という本を読んでインタプリタを実装できてしまいました。 いかに過去の自分の見積もりが甘かったかを痛感しました。 差を見誤った結果、「到底追いつけない」「自分には無理だ」と思って可能性を閉じてしまうのは勿体ないので「差を知る」ことを心がけると良いでしょう。 ハッカー養成塾:ハッカーへの遠回り – Higepon’s blog – Mona OS and Mosh これも、基本は同じである。 To-Beとの差分を意識し、一日30分でもいいから努力を続けること、情熱を持ち続けることが重要である。

夢をビジョンに、ビジョンを戦略に、戦略を戦術に、落として実践せよ

  昔、プレジデントで読んだ、伊藤忠の小林元社長の言葉。 小林社長は、次のように語る。 「いつも『夢』を持てと言っています。まず、それがなければ駄目です。しかし、次に夢を『ビジョン』に落とせ、そのビジョンを『戦略』に落とせ、戦略を『戦術』に落として実践しろと言っています」 本気のプレゼンなら、細かい質問にも明確な答えが即座に返ってくる。五分後に同じことを聞いてもブレがない。目が逃げない。つまり、単に夢を持っているだけでなく、それを実現するための具体的な戦略、戦術まで考え抜いている。内容を自分自身で完全に消化しているから、どの角度から質問されても正確に齟齬やよどみが生じない。だからこそ、プレゼンに迫力が出るのだ。   夢→ビジョン→戦略→戦術→実践というよく言われるフレームワークはすごく気に入ったのだが、個々の意味の定義は? 『夢』は、自分が本当にやりたいこと、なりたいこと。ワクワクすること。寝食忘れて打ち込める、頭おかしいんじゃないかっていうぐらい、がんばれること。 『ビジョン』は、長期的に到達したい目標地点、なりたい自分を定めること。 『戦略』は、何を持って目標が達成されるかの基準を明確にすること。目標地点に到達するための進路を明確にすること。目標地点に到達するための道程を、積み木に分解すること。 『戦術』は、日々のtodoに落とすこと。誰が、いつまでに、何をすればいいのかも明確にすること。 『実践』は、汗をかくこと。机に座って悶々とするのではなく、毎日コツコツとでも行動すること。todoが確実に消化されているか、方向性は正しいかを常にチェックすること。最後まであきらめないこと。 みたいな感じだろうか。自分の日々の行動をチェックする上で役にたつ。