プログラミングの最強最短の勉強法

プログラミングを独学で習得にあたり、もっとも成功確率を上げる学習方法があります。
これまで多くのITエンジニアと交流を持ち、その中で優秀と感じられる人ほど、これからお伝えする方法を取っています。
この方法を取らなければ、学習時間が掛かりすぎ、他者よりかなり遅れを取ります。
ここでは、プログラミングの独学に慣れていない方に、ITエンジニアに取材して分かったことをお伝えしています。

プログラミング独学の最短習得は当面の目標設定

プログラミングの学習の心構えは、小中高の学校でのそれと少し違います。テスト対策の学習ではなく、クライアントの要求を満たすための学習です。
そのため、全て暗記する必要も、完全に理解する必要もありません。その代わり、アバウトでもいいので目標を設定し、必要なことだけをするようにします。
このやり方は人生成功の必読書である「七つの習慣」を始めとする啓蒙書に書かれています。

事実、エンジニアの中には、文法に無頓着や簡潔に記載できる方法を知らない人がいます。優秀な人でもです。
エンジニア歴10年の彼は、他者が編集したソースをもって私のところに「何故これは動くのかと」と質問に来ました。それは、書籍で稀に見かけますが、可読性が損なわれるため見慣れない記載方法でした。私もしません。実践重視の彼が知るはずもありません。
また、ある一年前の今日起こったことを全て言える程の記憶力を持つエンジニアは、パターン化されたプログラミング技法を知りません。良く知られている技法がありそれをすれば開発効率があがるのですが、彼は記憶力がいいため、知らなくてもあっという間に実装できてしまいます。
もちろん多くを知っている人はいます。しかし、最初からではなく業務中に学んでいます。
最初から、全てを知る必要はありません。

そのため、学習は目標設定がスタートになります。
もし今の業務の延長線上だったら、必要な学ぶべきものは限られてきます。資格試験が目的でも同様です。
書籍で丹念に読むべきところは、目標に沿ったものだけです。それ以外は流し読みで十分です。但し、完全に読み飛ばすと、既にあるのにコードを書いてしまう羽目になります。

プログラミング独学に必要な期間は、最大1週間

何週間も書籍の理解に専念する必要はありません。目標設定に沿った知識を身に着けたら、直ぐにコードを書くことをお勧めします。むしろ書籍を読みながらでも、直ぐに手を動かす方が、時間を浪費しなくて済みます。
理由は、

  • 言語の文法は、超簡単
  • 言語以外で時間が掛かる事もある
  • 言語及びその周辺の理解に終わりはない

言語の文法は、超簡単

ここ20年でメジャーになった高級言語の多くは、習得が容易になりました。それまで自前で作らなければならかった、メモリ管理・リスト制御・辞書制御・スレッド・イベント制御が、今は言語事態に組み入れられています。言語に標準装備されてなくても、サードバーティのライブラリで用が足ります。
つまり、学習エリアが一からの実装から、既にあるものの使い方にシフトしているのです。必要なものが揃っているので、簡単な文法さえ分かってれば作り始められます。文法を知るのに、一週間も掛かりません。

言語以外で時間が掛かる事もある

学習において時間を費やすのは、当初の想定を超えたところにあります。例えば、開発環境が構築できない。プログラムを走らせると、英語表記のエラーが表示されて解決方法が分からない。出力されたファイルが文字化けをしている。
慣れていれば解決できますが、書籍のみの学習ではそのような問題発生を目にすることすらありません。また、開発には、フレームワーク・開発ツール・OSの理解も必要になります。
一日は24間と限られています。早く体験し、躓いたら解決方法を探り早期に解消しなければなりません。もし仮にダメだとしたら質問可能なオンラインスクールのような外部に答えを求めたくなります。

言語及びその周辺の理解に終わりはない

言語は幅が広く奥も深く終わりはありません。言語及びその周辺の更新が速いためです。言語やフレームワークやライブラリ等を学び始めたら、それらが大幅に更新されため、キャッチアップ前に不要になってしまう事がしばしばあります。
私自身、あるOSで時間を浪費したことがあります。そのOSのソースは一般に公開されており、最新のものの構造の一部を書面化する作業をしていました。ところがある日、OSがバージョンアップされたのです。それまでの構造は跡形もありません。もちろん、それまでの作業は全て破棄です。
細かく見ている間に、周りは変化し続けます。ゴールがないのに、全ての完全理解を目指す必要があるでしょうか。最初は程ほどで、実践前又はその中での完璧理解が無駄をなします。

直ぐに作り始めても作れる理由

簡単だからです。
ネット環境が整っている今、始めてのプログラミングで望んでいるようなことは、ネットワーク経由のコードを組み合わせるだけで実現できます。文法が簡単なので、思うほど理解に苦労しません。応用もできます。
私自身、アセンブリ言語 C/C++ Java C# Pythonの他WEB系もしていますが、C++を除き作る前に言語学習はほどほどです。全くしていない言語もあります。作り始めて分からなかったらネットで探り、より深く知りたくなった時に初めて書籍や雑誌をあたります。
それほど簡単なのです。

プログラミング言語は広く深くする知る価値は高い

これまでの主張を覆すようですが、言語やその周辺を広く深く知る事は、あなたとあなたの周辺を望む方向へ導きます。

  • 技術選択の誤りを減らせる
  • 開発期間の短縮化が可能
  • 教育する立場では、より多くのものに貢献できる

広く深く知っていれば、要求に対する最適解が簡単に見つかります。調べる労力は、対してありません。
私は、大型書店におもむき書籍を漁るのを習慣にしていますが、顧客からの要求に適切に応えることができています。それは、顧客の安心感にも繋がります。いきなり作り始めていいのは、あくまでも最初だけです。

独学ではカバーできない事がある

独学で挫折する可能性は、少なからずあります。
モチベーションを維持するだけの目標設定ができないのなら、二度目のチャンスがいずれかは訪れるでしょう。
私自身も、一度挫折した言語があります。必要性が生じて再度チャレンジしたところ、苦なく業務が続けられるようになりました。

しかし、設定が出来ているにもかかわらず、続かない事もあります。何らかの理由で、理解できなかったのかもしれません。
そうしたときは、迷わずスクールです。教えてくれるだけではなく、学費を払っているのですから、元を取りに行こうという気合が生じるメリットがあります。
その学費は実に安いです。ITエンジニアとして働き始めたら、一か月で元が取れるのですから。

コメント

タイトルとURLをコピーしました