これは何?
これは僕がメンターをやっているフィヨルドブートキャンプで受講生向けに書いた記事です。
ただ、内容の8割ぐらいは未経験からプログラマを目指している初心者のみなさんにも役立つと思うので、そのまま公開することにしました。
想定読者は「フィヨルドブートキャンプの受講生」なので、フィヨルドブートキャンプの関係者以外の人が読むと「???」となる部分があるかもしれませんが、その点は悪しからず🙏
それでは以下が本編です。
はじめに
みなさんはフィヨルドブートキャンプに入ってプログラミングの「勉強」をします。また、大半の受講生のみなさんは学校で「勉強」してきたと思います。どちらも「勉強」ですが、実は学校の勉強とプログラミングの勉強は異なる点が多いです。その違いを意識せずに、学校の勉強と同じ感覚でプログラミングの勉強をやると、非効率な勉強をしてしまう恐れがあります。
この記事ではプログラミングの勉強は学校の勉強と何がどう違うのか、という点をまとめます。そして、その内容を受けて、技術書をどう読み進めるべきか、という話を書きます。
(備考)
なお、ここに書く内容は資格試験には当てはまりません。資格試験はむしろ学校の勉強に近い面がありますが、ここでは資格試験は考慮しないものとします。
試験があるわけではない
プログラミングの勉強はいくらやっても試験があるわけではありません。フィヨルドブートキャンプでは課題提出のプラクティスがありますが、それは学校の試験とは大きく異なります。課題提出は同じ問題を、同じ場所で、同じ時間に、何も見ずに、全員が「よーい、どん」で解くような試験ではありません。
プログラミングは困ったらその都度調べればOKです。もちろん、いろんなことを暗記している方が早くコードが書けますが、暗記すること自体はMUSTではありません。「うーん、困ったな」とか「あれ、なんだっけ?忘れちゃった」と思ったら、その都度調べることが許されます。
高い点数を取ることが目的ではない
学校の試験は高い点を取るほど「偉い偉い」と褒められますが、プログラミングはいくら勉強しても得点が付けられるような試験があるわけではありません。そもそもプログラミングは学校の試験のように公平な点を付けられません。
よって本の内容を隅から隅まで完璧に理解して覚える方が高得点を取れるから偉い、ということにもなりません。もちろん、全部完璧に理解できればそれがベストですが、全部完璧に理解することは学校の勉強ほどプライオリティは高くありません。
本の内容を丸暗記したからといって必ず就職できるという保証はない
大学受験などでは教科書の内容を完璧に理解して覚えれば、ほぼ確実に志望校に合格することができます。
ですが、プログラマとして転職する際は何か技術知識を問われるようなペーパーテストがあって、それによって採用の合否が決まるわけではありません。
豊富な技術知識を身につけていることは目的の企業に採用されるために必要な一要素であるかもしれませんが、それがすべてではありません。
他人との競争ではない
プログラミングの勉強は他人と得点を競い合うものではありません。むしろ、業務では他の人と協力し合うことが大事になります。つまり、困ったら助け合う、教えてあげる&教えてもらう、の持ちつ持たれつの関係になるのが理想的です。
もちろん、他の人よりもすぐれた技術スキルを習得することは大事ですが、大学受験のように狭き門を目指して高得点を競い合い、点数が低い者が敗れ去る、といったルールはプログラミングの勉強には当てはまりません。
(備考)
就職活動では他人との競争が発生しますが、必ずしも技術力だけが採用・不採用に直結するとは限りません。たとえば、AさんとBさんではBさんの方が技術力が少し高いが、Aさんの方が会社のカルチャーにフィットしていたためAさんが採用される、ということもありえます。
よって、技術書の内容を隅から隅まで理解する必要はない
上記のような理由により、技術書を読むのと、教科書や参考書を読むのとは考え方が大きく異なります。つまり、技術書の場合は隅から隅まで完璧に理解して暗記する必要はありません。
ゆえに、学校での勉強と同じ感覚で技術書を読もうとしている人は、考え方を改める必要があります。
じゃあ、技術書はどんなふうに読めばいいの?
技術書の理想的な読み方ですが、僕個人としては以下のように考えます。
頭の中にインデックスを作れば良しとする
技術書のオススメの読み方は以前こちらのブログに書きました。
上のブログでも書いたように、わからないところが出てきたら、あとで読み直せるように頭の中にインデックスを作ればそれでOKです。わからない内容はその知識が必要になったときに読み直せば良いのです。
恥ずかしがらずに誰かに聞く
また、フィヨルドブートキャンプでは「わからないところを誰かに聞く」ということもしやすいはずです。DiscordやQ&A掲示板、質問・雑談タイムなどを活用すれば、メンターや他の受講生がきっといろいろ教えてくれます。
重要なポイントとそうでもないポイントを押さえる
さらに、フィヨルドブートキャンプの「技術書を読む系」のプラクティスでは、「本の読み方」が紹介されていることがあります。
例:「UNIX・Linux について知る」のプラクティスと、新しいLinuxの教科書の読み方
こういった「読み方」ページを参照して、重要なポイントとそうでないポイントを事前に把握しましょう。重要でないポイントは今すぐ理解できなくても大丈夫です。
何度か読み直して「ちょっとわからんな、今の自分には難しすぎるな」と思ったら、いったんそこはスキップしてどんどん読み進めていきましょう!
重要なポイントでなくても、自分にとって面白そうなら深掘りOK!
重要なポイントでなければ理解できなくても良いと書きましたが、そのポイントが自分にとって面白そうな内容であれば、深掘りするのは全然構いません。たとえば、「Linuxの教科書を読んでいたら、sed/awkがとても面白そうだったので、sed/awkを極めたいと思いました!」というのであれば、ぜひsed/awkを極めてください。「重要でないポイントは絶対に立ち止まるな」という主張ではないのでお間違えのないように。
まとめ
というわけで、このエントリでは学校の勉強とプログラミングの勉強は何が違うか、そして技術書をどう読むべきか、という話を書いてみました。
多くの日本人にとって、人生で「勉強する場所」と言えば「学校」ぐらいしかないので、プログラミングの勉強もつい、学校の勉強と同じスタイルになってしまうのは仕方ない面もあります。ですが、よくよく考えるとそれだけが全てではないはずです。なので、プログラミングの勉強をするときはちょっと視点を変えてみましょう😉
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus
- 作者:伊藤 淳一
- 発売日: 2017/11/25
- メディア: Kindle版