新しいことを学ぶときについて

新しいことを学ぼうとするとストレスがかかる。

例えば、僕にとってはiOSのアプリ開発がそれだ。新しい言語(Swift)に、これまで扱ったことのないインターフェイスのライブラリ、UI部品、レイアウトの方法、自分のやりたいことができたときは無上の喜びを感じるけれど、そこに到達するまでのひとつひとつでストレスを感じる。

昨日も、くだらないところでハマって2時間を無駄にしたり、言語仕様を理解していなくてコードを手当たり次第にいじって、そのうち「自分、センスないなー。頭悪いなー」とテンションが下がってくる。

そんな一日を過ごした翌日は、驚くほど理解が捗ったり、実装がうまくいく。本を読めば「あぁ、昨日のあれってそういうことだったのか」とストンと落ちるし、自分のやりたいこともすんなりできる。

確か、「情熱プログラマー」か「アプレンティスシップ・パターン」に、ロッククライミング初心者に対する指導を例に似たような話が書いてあった気がする。 まずはやらせてみて、その後に理論を説明する。そうすると最初の体験と結びつくので、最初に理論を説明された場合と比べて、理解や習得が捗る、というものだ。(たしかにやったこともないのに「あの場合は○○で」とか言われてもよくわからない気がする)

この話は、最初に形式から入ることを批判しているわけじゃない。例えば、最初にiOSアプリケーション開発とかSwiftの文法の本やら解説サイトをひと通り読んでおけば、全体像を把握できるし、変なところでハマったりするのも防ぐことができる。

ふたつは矛盾しているわけではなくて、状況に応じて適切な方法を選択すればいい。「本ばっかり読んで、手を動かしてないなぁ」と思ったら、とりあえず手を動かしてみればいいだろうし、「なんかいきあたりばったりで適当にコード書いてるな」と思ったら本を読んでみる。そんなかんじ。


と、ここまで書いたことを定期的に思ったりしていて、その都度思うのも非効率なのでポエムっぽいけど、文章にすることにした。
以下は自分に対するなにか

  • 週に最低一度は、上に書いたような経験をする
  • 次の日いいかんじになっているのだから、あんまり落ち込むな(そもそも、それでお金をいただいて、ご飯を食べれるレベルのことなのだから、たった1日でできるようになるわけがない)
  • 学んだことを記録しておくこと(区切りのいい大きさでPullReqをだして、コメントに書いておくとよさそう)

書籍

情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)