なぜ、プログラム初心者はネット検索ではなく本の方が学習効率がいいのか

いやいや何言ってるの、ネットならタダ、本はお金がかかるよ?
わざわざ買って、クソの役にも立たなかったらどうするの?

ごもっともですね!

ただ、これが言える人は、もう「初心者」ではなく「経験者」だと思います。
通り過ぎてしまうと忘れるものですが、初心者だった時、驚くべき勘違いでハマったことはないでしょうか?
もちろん経験者でもハマる事はありますが、違うのは「その後の対応能力」です。

初心者は経験者より地雷を踏む可能性が高いのに、地雷の解除方法を知りません。

そんな初心者がグーグル検索だけだと困りそうな理由を挙げてみます。
(具体例は unity、C# になります)

検索の難しさ

そもそも検索ワードがわからない

数値を文字列として表示するとき、フォーマットを指定したい(少数 3 桁までとか)。
こんな時、慣れている人の検索キーワード。

数値 文字列 フォーマット

こんな感じ? 本当に知っていたら String.Format とかもキーワードに含めるでしょうか。

より深い情報を知りたい場合、キーワードは英語だけの方が情報にたどり着きやすいことも。

一方、初心者のキーワード。

画面に出したい 数字

言ってることはたいして違いないものの、この検索ワードでは望む回答は得られません。
どういう用語がヒットしやすいか、勘が働かないのです。

ネット記事は、(初心者に)わかりやすく書いているわけではない

検索してトップに出てくる記事は、記事を書いた人の覚書として書かれているかもしれません。
ソースの一部だけ抜粋していても、初心者は「これをどこにいれるの?」と狼狽えるのです。

objs = GameObject.FindGameObjectsWithTag(TagName.PlayerWall);
if (objs == null || objs.Length != 1)
{
    return;
}

例えばこんな感じの unity (C#) のコードがどっかのサイトに書いてあったとして。
コピペしただけじゃエラーになるコードです。

人間は未知なるものに強いストレスを抱く生き物。初心者である貴方はエラーに強い吐き気を感じ「もうわからん。無理。このサイトはクソ」となること請け合いです。

その昔、研修中にエラーでパニックを起こした人がいました。
曰く、「今まで生きてきて否定されたことがなかった」からだそうです。
エラーとか不具合の指摘、最近だとプルリクのコメントなんかを、「人格否定」と感じる人、たまにいます。

例えばこんな基本事項、

  • 変数の宣言をどこにいれればいいのか(そもそも変数はなんなのか)
  • public、protected、private の差はなんなのか
  • using 記述の意味とか

経験者であれば「言われなくてもなんとなくわかっている事」で容易くつまづいてしまいます。
「Hello world! がわかっても、上記の問いを理解することはありません。

Hello world でなるほどわかった、となるのはむしろ経験者

間違えた情報にたどり着く

Aを解決する方法を検索し、違う情報に惑わされる…ということがあります。

  • C# ではなく Java の情報に行きついた
  • unity ではなく Windows.Forms の情報だった(OnApplicationFocus で引っかかった人、いるはず)
  • ダウンロードした環境は unity5.x のものであり、unity2021 ではなくなっていた

これらも全て、過去からその知識に向き合ってきた人なら、

  • そもそも言語が違うとすぐにわかる。むしろ Java の情報を読み砕いて C# の情報にする
  • Windows.Forms は Windows でしか使えないとすぐ気づく
  • Obsolate や Deprecated といった状態で、似ているけど別の答えがあるだろうと探す

こんな風に惑わされることもなく次へ進めますが、初心者にとっては袋小路。
そろそろ Stack Overflow のような質問箱に助けをもとめたくなっているでしょう。

リファレンス・マニュアルを見ろ

一番正確、かつ早く情報が得られるのは特定の言語や、開発環境に用意されたリファレンス・マニュアルです。
そこには、多くのググれ勢が追記で「ただしリファレンスマニュアルな!」というのも頷ける情報の源泉です。

た、だ、し。
このリファレンスマニュアル(辞書)、やりたいことを上手く言葉にできず、グーグルの検索ワードすら思いつかない者にとって、上手く使いこなすことは非常に困難です。
また、十分な日本語マニュアルがないこともあります。

サンプルコード見ればそこに答えがある、というのも経験者ならではの言葉で、初心者にとっては応用力などゼロ、たまたまコピペして上手く動くという強運でもない限り、そこにあるパズルのピースから、答えを導き出すことは出来ないでしょう。

本の利点

検索する必要がない

本の場合、その本で完結するよう情報が誘導されているので、未知の情報を繋ぎ合わせる必要がありません。

間違えた情報に行きつくこともなく、本によっては実行可能なプロジェクトまでついていたりするので、初心者にとっては遥かにストレスが少なく済むでしょう。

本に書いてある語句を、(わからなければ)自ら検索し、深く知るのは大事。

ただし、本は万能ではない

「今、自分がやりたいこと」を実現するための答えが本にあるとは限りません。

例えば unity のログをビルドした環境でも表示したいから、その答えが書いてある本を探す…といった探し方はほぼ無意味です。

本は、とりあえず書かれている通りに進め、動くことを喜ぶ。
それが終わったら、少しずつ改変、改造していく。
そうして言語や開発環境に慣れてくると、検索の下地が出来てくる。

そこから、本に頼らず検索の世界に足を踏み入れましょう。
自分の知らない(でも知りたい)分野を、体系的に掴む足がかりとして、本はとても有用だと思います。

初心者にとっての本は「よちよち歩きまでの補助」。でも、そこから先は自分で歩いていく必要があります。

本の選び方

本は無数にあり、情報サイトほどではないにしても、バグのあるソースコード掲載してたり、間違えた知識が書いてある本もあるかもしれません。

そういったものを避けるために、私はこんな風に探しています。

  • 「C# 本 おすすめ」などで検索し、個人ブログで複数人が勧めているものをピックアップ
  • その本に対して、amazon のレビューを確認。自分のレベルに合わせたコメントしている人を参考にする(例えば、初心者なのに上級者っぽい人が「これはいい!」とオススメしている本は役に立ちません)
  • 内容が自分の知りたいものか更に判断するには、本屋で実際に手に取ってみる
  • (可能であれば)本は2~3冊買って、読み比べる

最初に手に取る本は「いいもの」を選んだ方が、その後の自分のためにもなるので慎重に選びます。
(自分にとって「いいもの」であることが、とりあえず一番大事)

2~3冊の部分は「うわ、面倒そう…」と思うかもしれませんが、読み比べる事で各本の情報の偏りが補完できるので、オススメです。

さいごに

ここまで読んできて、プログラムが組めるようになるまでは、ちょっと道のり長いな…辛いな…と思うのであれば、プログラマーの未来は明るいです!

なぜなら、それだけライバルがいない「ブルーオーシャン」になる可能性が高いからです。
仕事にしようと思っている人は、そんな視座もあると心に留めておいてください。

逆を言えば、皆が「いい!」というものは程なくしてレッドオーシャンになる可能性があります。
そこそこ名前は出てくるが、Best3 に入らないような言語をきわめておくのも、高収入を得られる一つの道です。
Python とか…不当に技術者が買いたたかれる未来なきよう、祈っています…。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA