熟すと腐るは紙一重

プログラミングに纏わる話や身の回りの話

「ズルさ」と「サボり」の違い

フィヨルドブートキャンプでプログラミング学習中のにしめです😊 フィヨルドブートキャンプでは様々なカリキュラム(プラクティス)があり、現在プロを目指す人のためのRuby入門(通称チェリー本)を読むというプラクティスに取り組んでいます。
背景として、私はRubyFizzBuzz問題を解いたり、カレンダーを表示するプログラムを書くプラクティスを終えて現在のチェリー本に入ったところです。
ようやく少しRubyを書き始めた程度ですが、チェリー本を読んでいて今の自分にはまだ難しいなと思う部分が多々出てきました。フィヨルドブートキャンプでは技術書の読み方などのドキュメント(記事)もあり、それらの記事を読んで技術書をどう読み進めたら良いか知ったり、日報にメンターさんや受講生から進め方のアドバイスをもらったりできます。
そうしているうちに、自分の中で1つの解が見えてきたので忘れないうちに書き出しておこうと思います。
先に自分が参考に読んだ記事を紹介しておきます。
学習を加速させるインデックス読書術 - Qiita

技術書、最初から完全に理解するか、頭の中にインデックスを作るか? 〜 #チェリー本 が後半から難しくなる問題を考える - give IT a try

学校の勉強とプログラミングの勉強は何が違うか(そして技術書をどう読むべきか) - give IT a try

技術書が難しくて分からない

これは初学者に限らず、熟練したプログラマの方でも遭遇するそうです。ですので、まず自分だけが分からなくてレベルが低いと思わなくても大丈夫。
そうは言うものの、自分は本を読みながらその先にあるプラクティスを想像し、これを読んである程度頭に知識を入れてからでないと苦労するぞ。という気持ちがありました。なので分からない部分をどの程度飛ばしても良いのか、どれくらい脱力していいのか悩んでいて、日報にもそのような気持ちを書きました。

苦労して読むより書いて苦労した方が効率的かつ楽しい

特に技術書の1周目は分からない箇所だらけだと思います。そこで苦労しながら読むのはスピードも落ちるし、集中力は持たないし、最悪の場合読むのを辞めてしまったりします。

書いて苦労した方が効率的かつ楽しい

「苦労する」と「楽しい」は本来反対の意味合いを持つので文章的には矛盾していると思います。プログラミングの関しての話になってしまいますが、メンターさんからもらったアドバイスにこんな言葉がありました。

  • コードを書くために必要最小限の事前知識は必要ですが、本を読むだけでは知識にはならず、自分の手と頭を動かしてコードを書いた方が勉強になる。
  • 教科書に詰まってモチベーション下がるぐらいなら次のプラクティスに進むのも全然アリ。

ここで言われている、必要最小限の事前知識を僕は一応得ています。これはFizzBuzzのコードを書く前に、ゼロからわかる Ruby 超入門 と言う書籍を読んでおり、Rubyに触れていると言う点でです。
つまり、技術書を読む中で難しい箇所や理解が追いつかない点があっても、全部理解しようとしなくて良い。その状態でコードを書き出しても良いし、詰まったら必要な箇所を読んで調べる形式の方が効率が良いということです。
実際に、僕は難解な技術書を読んでいるより、分からなくてもコードを考えて書いている方が楽しく感じます。コードを書いて詰まりまくって調べて覚えた方が知識が定着しやすいよって教えてもらって技術書を読む時の気が楽になりました😊

なぜ最初から最後までしっかり読みたくなるのか

今までの育ってきた環境が大きく影響していると思うのですが、例えば部活動や持久走大会、学校のテストなどで大人たちから「ズルをするな。ズルは良くない」と教えられてきました。なので技術書を読み進めて行く上で、読み飛ばすことや途中で違うことを始める事がズルをする事だという認識が無意識のうちに発生してしまっていました。真面目に全部読み終えてからじゃいけないと。
では、技術書を読まずにプラクティスや課題をクリアするために、ネットで調べて拾ってきたコードをコピペして動くコードを完成し、理解してないまま提出するのはどうか。それはきっと「ズル」ではなく「サボり」です。やるべき事さえもやっていないからです。
社会人になって仕事をしながらや、育児をしながら勉強するのって本当に大変です。時間が無いので、効率よく進めなければいけません。それには多少のズル賢さが必要だなと思いました。

ズルくても良いけどサボると意味がない

上に書いたように、自分の中で技術書を読み飛ばすことはズルをする事だという意識があったのだと思います。だけどこれは前述した「サボり」ではないのだと思いました。もし僕が技術書に一切目を通さずプラクティスをクリアしたことにし、コピペでコードを完成させたとしたらそれはサボりであって自分の力はつかないので意味がありません。

  • ズルすることを許容し、モチベーションを下げない事。
  • どうせ苦労するなら楽しく苦労する。
  • 技術書を読み飛ばすことはサボりでは無いのでこれが全部読めないと(理解できないと)前に進んだらいけないなんて自分を追い込まないで。

これが真面目すぎる僕が見つけた1つの解です(笑)
誰にでも当てはまる考え方では無いし色んな読み方があるけど、1つの道しるべとして書き残しました。