勉強方法

初心者は知らないと思うが、独学ができないプログラマーは死ぬしかないのだ

こんにちは、とだ (cohki0305) です

いきなりですが、プログラマーは自分で勉強できなければ死にます。
というのもプログラミング技術は常に進化しているので、先生がなかなかいないからなのです。

先生がいない中プログラマーが技術を身につけるには、

  1. 協力して勉強する(勉強会)
  2. 独学でなんとかする

になります。

1 の方法は効果的ですが、やはり時間の関係上限界があります。
毎日自分が参加したい勉強会はないでしょう。

そして、自分のレベルが上がるごとに、それにあった勉強会はなくなっていきます。
出来れば出来るほど自分のレベル以上の人は少なくなるからです。

なので、技術を身につけるのは「独学でなんとかする」がメインになるのです。

誤解しないでくださいよ!
僕は決して初心者の人に「独学でプログラミング勉強しろ!」と言いたいのではないです!
初心者のうちに自分で勉強する癖をつけてほしいと思っているだけなのです!

というわけで、独学のみでプログラマーになった独学の鬼である僕プログラミング独学マナーを紹介しようと思います。

必死に学び、実践する

必死に学び、実装する

魔術や医学を習得する場合もそうですが、プログラミングも 学び実践 がめっちゃ大事です。
プログラミングは知識はもちろん問われますが、書けることも求められます。
書けるようになるには、実践が必要なのです。

どちらが欠けていても全然上達しません。

基礎的な知識を学び、実践する

はじめは、基礎的な知識から勉強することになりますよね。

こういった知識は一般的には、学びは基本書から得ます。
基本書は学びがメインですが、実践も大事です。
実践は、その基本書のコードを書き写す(一般的に、写経 と呼ばれます)ことです。

基本書は読むだけで知った気になることが多いのですが、書経しなければなかなか自分で書けるようになりません。

もちろん、書き写すだけでは意味がないので、意味を理解しながら書きましょう。
読んでいたときに気づかなかったことに気づいたり、手がそのプログラミング言語を覚えてくれるようになるでしょう。

本が出版されていなければ、ネットで「言語名(フレームワーク名) + tutorial」と検索してみましょう。
そうすれば、ほとんどの場合何かしらの tutorial が出て来るでしょう。

tutorial はまったくわからない人にでも、学びと実践を与えてくれるコンテンツです。
解説がありそれを理解した上で、実践させてくれる学習ツールなので積極的に利用しましょう。

※ 有名な言語やフレームワークであれば、Progate やドットインストールの活用もおすすめです。

自分で考えて、コードを書く

基本的な知識を得たら、もっと実践を強化していきましょう。

今まではコードを写経という実践でしたが、次は自分で考えてコードを書きましょう。
コードを書けるようになるのに、実際にある問題をプログラミングのコードにまで落とし込む必要があります。

それには、自分が作りたいものを作ったり、プログラミングの問題を解くのが良いでしょう。

アプリを作れば、今ある問題をどのように解決するのかよく考えられるので実力がつきます。
作りたいものがなければ、今あるアプリのクローンアプリを作ると良いでしょう。

プログラミングの問題は、PaizaCodeIQ などをやるといいです。
レベルに合わせて、いろいろな問題を出してくれるサービスなので、問題を解いているうちに実力がつくでしょう。

わからないことはすぐに聞くな!

わからないことはすぐに聞くな!

これはプログラマーにとってすごく大事なことです。
(つまらないことを聞いても大丈夫ですよ笑)
コードを書いていると、わからないことにぶち当たることはめっちゃあります。

これは当たり前のことです。
そういった場合に必ずしも聞ける人がいるわけではないので 考える力自分で調べる力 が必要です。

問題を考える際は、以下を意識しましょう。

  1. エラーが出ているのであれば、スタックトレースを読みましょう
  2. 問題の切り分けをしましょう
  3. 同じ問題にぶち当たってる人を探そう

スタックトレースを読みましょう

スタックトレースとは、コンソールに表示されるプログラムの実行過程を表すものです。

以下の画像のようなやつです。

エラーが起こっている場合は、ここに原因が書いてあります!
なので、答えは実は目の前にあったりするのです。

ただ読んだことなかったり、字がいっぱいで見方がわからないとかで読まずに、原因を見逃してしまうということが多いのです。

よく見れば、実はちゃんとわかりやすく書いてくれています。
用語がわからなくて、理解できないのであればその用語をしっかり調べて勉強しましょう。

問題の切り分けをする

問題が起こってもエラーが起こらない場合も多いです。
そういう場合は、問題の切り分けをしましょう。

A -> B -> C

というふうに流れでプログラムが動いているとします。
C でもし期待していた結果とは異なるものが返ってきたが、原因がわからない場合どのように考えるべきでしょうか。

もちろん C に問題がある可能性もあるのですが、その前に B の状態を確認しましょう。
C に来る前に、もうすでに問題が発生していて、それゆえに C がおかしくなっているかもしれません。

もし B がおかしくなければ、C に問題があることがわかりますよね。
逆に B がおかしければ、A を確認して B に問題があるのかを確認すべきです。

ここまでくればどこに問題があるのかわかるので、そこをよく観察すれば答えに近づけるでしょう。

どこまで正しく動いてどこからおかしいのかを明らかにすることで問題の箇所を見つけましょう

こういう問題の切り分けを行うために、プログラムではデバッグ用のツールが用意されています。

言語ごとによってデバッグツールは異なるので、自分が学習している言語のデバッグツールを調べてみましょう!

同じ問題にぶち当たってる人を探そう

ここまで来てわからなければ、ググりましょう。
エラーや自分が詰まっていることを検索すれば、大体出てきます。

以下のように使っている言語とエラーをセットにして検索するとかが良いでしょう。
「Rails No route matches [GET] “/pages”」

あとは、言語と問題になっている現象を書くとよいです。
「jQuery Ajax 通信で GET できない」

詳細に状況を書けばよい検索が返ってくるので工夫しましょう。

あとは、英語でググるとヒット率がぐっと上がるのでおすすめです!
なので、日本語で調べて出てこないようであれば英語で検索してみましょう。

それでもわからない場合は質問しよう!

ここまで考えてもわからない場合は質問しましょう!
初心者のうちは聞けば大体の問題が解決されるでしょう。

周りにエンジニアがいない人は、teratail などの質問サイトを利用しましょう。

このときに大事なのが、上で自分が調べてきたことを説明することです。
こういうふうに考えてこうやって見たがだめだったということを出来る限り具体的に書きましょう。

打ったコマンドと実行結果を書いたり、コードの修正内容を書くと良いでしょう。
他には調べたドキュメントのリンクを貼ったりするのもよいですね。

これを書いておけば、質問に応える方はスムーズに答えられます。
そしてあなたが考えたことや調べ方が間違っていたことを教えてくれると思います。

答えだけ教えてもらっても、次に活かせない可能性があります。
考え方や調べ方の間違いまで指摘してもらえれば、独学する力を増すことが出来るでしょう。

公式ドキュメントは最も正確なドキュメント

最後のポイントですが、公式ドキュメントは最も正確なドキュメントだと認識することです。

Qiita やブログに書いている内容はわかりやすいものが多いです。
日本語で書いているので読みやすいです。

ただ、正確性に欠けるものはあります。
バージョンが異なると、いままで正しかったものが間違いになることは多いです。
昨日まで正しかったり新しかったりするものが、今日間違いや時代遅れになる業界です。

なので公式ドキュメントを読む癖をつけましょう。

何か詰まったときに、Qiita ではなくて公式ドキュメントを読んで見るのはおすすめです。
バグとして報告されていて、回避方法が書かれている可能性があります。

コードを書くときに、良い書き方が思いつかないときにも読んでみると、推奨される書き方があったりします。
逆にアンチパターンが書いてある場合もあります。

ライブラリを使う前に読んでおけば、便利なメソッドについて解説されていてコードをより美しくすることもできるでしょう。

※ 公式ドキュメントより正確なドキュメントを読みたい場合は、直接そのコードを読むのもおすすめですよ。

最後に

プログラマーとして必要な独学力を磨くポイントを紹介しました。
日頃からすこしずつ意識することで身につけられる能力なので、今日この記事を読んだその日から実践してきましょう!

ABOUT ME
cohki0305
25 歳にして実務経験 1 年でフリーランスエンジニアになり月収 3 倍になった男。独学のみで営業からエンジニアになった経験あり。 未経験からでもエンジニアになる術を多くの人に伝えたいと思ってます!