プログラミングの学び方について知っておいてほしいこと


study

photo credit: r.nial.bradshaw 18027-homework-math-daily.jpg via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

ノンプログラマーにとって、プログラミングの「学び方」は特に重要です。

というのも、そもそも学ぶ時間が少ないですし、後述しますがプログラミングの学習には多大な学習時間を要するからです。

本を買えばいいだろう、ネットを見ながら勉強すればいいだろう…備えなしにむやみに始めてしまうと、「自分には向いてないな」と挫折してしまう可能性も…

そんなことにならないためにも、うまく学ぶ方法を身につける必要があります。

ということで、ノンプログラマーがプログラミング学習を上手に進めるための前提知識と方法についてお伝えしていきます。

※この記事はコミュニティ「ノンプログラマーのためのスキルアップ研究会」定例会Vol.7「プログラミングの学び方について知っておいてほしいこと」の内容の一部を加筆修正して記事にしたものです。セミナーからの抜粋動画もありますので、合わせてご参考くださいね。当日の様子は以下のツイートまとめもご覧くださいませ。

ノンプロ研定例会Vol.7 「プログラミングの学び方について知っておいてほしいこと」
ひとこと「プログラミングを学ぶ」といっても、書籍、Webサイト、オンラインサービス、セミナー…たくさんの種類がありますよね。今の自分にとって、また目指すゴールを考えたときに、どの手法が良いのか…な..

なぜ「学び方」が重要なのか

結論から言ってしまいます。

もう、我々知識労働者は、生涯学び続けないといけないからです。

ノンプロ研の第1回目の定例会でもお話したのですが、プログラミングを学ぶには180~300時間程度が必要と言われています。

プログラミングを習得するためには何時間の学びが必要なのか #ノンプロ研
プログラミングを習得するには、どれだけの時間が必要なのでしょうか?今回はプログラミングを習得するためには何時間の学びが必要なのか?を明らかにしつつ、実際にそのための時間を捻出し、その習慣を作る方法を考えていきます。

上手な学び方ができていれば180時間である程度モノにできるかも知れませんが、そうでなければ同じ成果を得るのに300時間かかってしまうかも知れません。

現代のビジネスマンは忙しいのです。効率よく学ぶかどうかは、死活問題です。

別の視点ですが、プログラミングに携わる人達は、どのレベルにあったとしてもそれぞれの「リスク」と向き合う必要が出てきます。

それをが以下の表です。

ランク スキルレベル 実務への活用 最大のリスク
Beginners 初級 できない 挫折
Wanderers 中級 できる 停滞
Pioneers 上級 できる 技術の衰退

ビギナーは前述の通り、モノにするまでは学びが実務に活かせないので、それまでの間にモチベーションの低下や習慣化の失敗などがあると、プログラミング学習に関して「挫折」をするというリスクを抱えています。

中級の人は、さまよっているということでWonderersと命名していますが、実務で使い始めてはいつつも、やればやるほど複雑な迷路に迷い込むような、そんな状況がリスクとしてあります。

上級の人たちは、どんどん開拓をしていけますが、その技術自体が衰退するリスクがあるので、別の技術領域にアンテナを張って学習をする必要があります。

ということで、プログラミングに携わる人たちは、それぞれ大きなリスクを抱えています。

そして、そのリスクを回避する唯一の方法は学び続けること、したがって学び方が上手かどうかは重要ということになります。

なぜプログラミングの学び方が重要なのか ノンプロ研定例会Vol.7から

プログラミングの学習にはパターンがある

道のりはだいたい決まっている

お伝えしたとおり、プログラミングの学習は数百時間を要する、長い道のりになります。

多くの人は、その道のりがどういうものなのか…わからずに学習をはじめてしまうのですが、実はプログラミング学習がどういう道のりかは事前にある程度予想をすることができます。

というのも、プログラミングの学習で学ぶことというのは、言語問わずだいたい同じ流れで、以下のようなものになります。

  1. 準備
  2. 基本仕様・構文
  3. 制御構文
  4. 関数・クラスの作り方
  5. 関数・クラスの使い方

それで、1から4までは「積み重ね」で、だいたい1から順番に4までを階段を登るようにマスターしていく必要があります。

その間の多くの期間はつまりBeginnersなわけで、実務に使えないので、なるべく早い段階で4あたりまで到達する必要があります。

5の「関数・クラスの使い方」だけは、他の項目とはちょっと異質で「アラカルト」なんですね。つまり、ほしいやつだけチョイスして身につけていくような種類のものになります。

例えば、VBAで言えば、基本的なVBA関数と、Excelライブラリのオブジェクトの使い方がわかれば、実務で使うには十分のスキルを身につけることができます。

必要に応じて、PowerPointライブラリやScriptingライブラリの使い方を学ぶ人もいますが、全ての人に必要というわけではありません。

プログラミングの道のりにはパターンがある ノンプロ研定例会Vol.7から

こういったことを事前にイメージできていると、学習に必要な時間だけでなく、過程のイメージもできますし、自分にとって必要な学習の選別もきくようになったりします。

プログラミングはパターンで学ぶ

ある程度の学習が進み、Wanderersの段階になると、アラカルトをどんどん増やしていくフェイズになります。

しかし、すべてのオブジェクトやそのメンバーの使い方を四角四面にマスターしようとしたらきりがありません。

なぜなら、例えば以下のように、クラスやそのメンバーの数は膨大だからです。

  • VBAのExcelライブラリのクラスの数:300程度
  • GASのSpreadsheetサービスのメンバー数:317(※調査時点)

こんな数のものを、全部適当に仕入れていったら、脳みその中は散らかります。

例えば、VBAのメンバーは、表向きは関数、メソッド、プロパティといったふうに分類されています。それぞれ、何ものなのでしょうか?

また、メンバーはSub・Function・Propertyの3種類のプロシージャで作られています。これらのプロシージャはどういう役割を持つものでしょうか?

このように、プログラム言語には分類や体系があります。

スキルを高めていくそのいずれかのタイミングで、その分類や体系をきちんと理解し、脳みその中の知識を、上手に仕分け管理する能力が必要になります。

単純にインプットするのではなく、うまくパターン化して整理しながらインプットしていく能力が求められるのです。

写経のススメ

さて、以上のことがわかれば、それをベースとして、それぞれのレベルや学習環境、目的に合わせて学習法をセレクトしていけば良いということになります。

今は、以下のように、たくさんの学習法が提供されているので、たいへん恵まれていますよね。

  • 書籍(電子書籍含む)
  • ネット記事
  • オンラインサービス
  • 動画サービス
  • 研修

いずれの学習においても、私がオススメしたい学習の進め方は写経です。

写経とは「サンプルプログラムを書き写して、実行してみること」です。

コツとしては、「無心」としてやるのは駄目で、コードを確実に「理解」していることを確認しながら進める必要があります。

また、小さい単位で細かく実行しながら進めるということもポイントです。

限りある学習時間、最大限有効に活用くださいね。

まとめ

最後に、最も重要な学び方でえある「作りたいものを作る」について、動画で解説をしていますので、よろしければご覧ください。

しかし、「学び方」の学び方はとても重要ですね…。

というのも、おそらく、時代としては、一生学び続けないと、うまく稼げない時代に突入していっていると考えていまして、それはプログラミングに限らずです。

ぜひ、うまい学び方を身に着けて、上手に価値提供をしていきたいものです。

「ノンプログラマーのためのスキルアップ研究会」定例会・分科会レポート

コミュニティ「ノンプログラマーのためのスキルアップ研究会」では、毎月1回、学びの質やモチベーションを高めるための定例会を開催していますので、こちらで過去のレポートをお送りしています。

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント