プログラミング学習の需要の高まりが注目されますが、では実際にプログラミング学習を始めて技術を身に付けられる人は、どのぐらいの割合なのでしょう。
- 自らプログラミングを覚えたくて学ぼうとする人
- 仕事の事情でしょうがなくプログラミング学習を始めた人
- 創作意欲に駆られてプログラミングが必要になった人
プログラミング学習を始める事情は人それぞれですが、その多くはこんな事を思うのではないでしょうか
「手っ取り早く覚えたい」「簡単に習得できる方法はないの?」「全然わからん、ギブアップ」
将来エンジニアを目指しているなら、その事をモチベーションにして必死に学習を続ける可能性もありますが、そこまでの思いが無いなら挫折して諦めてしまうのも分かります。
プログラミング学習を挫折してしまう理由は、いろんなサイト等でもっともらしい事が挙げられていますが、その多くの理由の多くは “そのとおり”でもあり“ただの言い訳” でもあると感じます。
前提として、どのぐらい高度なプログラミング技術を身に着けたいのか、職業エンジニア・プログラマーを目指すのか、現在の仕事の効率化が目的なのか。
など前提の違いによって “そのとおり”と“ただの言い訳” の見方が変わります。
例えば「エラー等の問題を解決する事が出来ず挫折した」を真っ正直に信じると、この人達は問題の解決に臨めるほど、既にプログラミング技術を習得した人なんじゃないの?と感じます。むしろ「プログラミングの環境構築に失敗して諦めた」の方がプログラミング初心者が挫折する理由として分かりやすい。
要するにプログラミング学習の挫折とは、エラーの解決にも臨めない、プログラミングの基礎を達成していない状態で諦めた事であって、基礎は習得済みで更に高度な技術を学べるほどの、プログラミング技術を身に着けた人たちには当てはまりません。
プログラミング学習で一番の関門は最初の基礎の部分なんですよね。
- 出てくる説明文が何のことを言っているのか意味が分からないし
- 単語なのか記号なのか暗号なのかも分からないし
- 仕方がないから教材の真似して書いてみたけど動かないし
- 動いたとしてもだから何?だし
とにかく面白くないし眠くなる。
逆に言えば面白くない基礎さえ習得してしまえば、楽しく感じられるとも言えます。
決して面白くも楽しくもない基礎を如何にして短期間でクリアできるかが、プログラミング学習を成功させる重要な要因。
では、そのプログラミングの基礎を短期間で習得するには、どんな学習方法が良いのか。
|
プログラミングを短期間で習得する為に目的をはっきりさせる
プログラミングに限らず、何かを学習する際は目的・目標を設定するのは大事です。そして目的・目標の設定は叶えられるレベルにする事が大事。
目標を設定して、実行して、目標を達成する
目標を達成する事で楽しくなり自信も付きます。そして学習のモチベーションも維持される。
設定する目標のレベルを英語学習に例えると、
“日常会話が話せるレベル” では無く ”旅行に使える英会話” を最大目標にして、直近の目標を
”イミグレーションを通過できる会話” ”レストランで注文できる英会話”
ぐらいにするのがベストな感じ。
プログラミングを活用したい場面は?
短期間でプログラミングを習得する場合の目標は、身近な問題や課題を解決することを目標に設定します。
[沢山のファイルを規則に沿ってまとめたい] [エクセルの入力を手短に終わらせたい]
などのように、自動で処理できたらどれ程効率的で作業の負担が少なくなるかと思えるレベルの事。
最初から、「あんな事やそんな事が出来てこんな機能もある、見た目もカッコいいアプリの作成」のような事を目標にしないで、結果がすぐ確認できる直近の小さな目標を掲げる事が大事。
意図したとおりに動いたら、楽しいし自信にも繋がります。
プログラマー・エンジニアになるのが目標では無い
非エンジニアがプログラミングを学習する際に掲げる目標は、決して「職業エンジニア・プログラマー」ではありません、まして「天才プログラマー」や「世界を救うスーパーハッカー」などでもありません。
大事なことは、プログラミングの技術レベルの目標を “職業エンジニア・プログラマー” にしてはいけないという事。
将来的に “あんな事もこんな事もできる” 事を望むのは良いですが、それでも非エンジニアとして掲げる目標は、現在の業務を効率的する事にした方が現実的に想像しやすく、目標設定も明確になると思います。
|
プログラミングを習得するコツは「とりあえず書く」
プログラミングは結局のところ書いてなんぼの世界
書いて・実行して・結果を確認
これの繰り返し以外で、習得できる方法はありません。
つまり、この繰り返しを如何にして実行できるかが、効率的に学習する為の鍵になります。
覚える必要は無い
職業エンジニアで無い限り、プログラミングの書き方を覚える必要はありません。
もし、分からなかった、忘れてしまった、としても調べたら良いだけです。
忘れて・調べて・書いて・実行する
これの繰り返しで、少しずつ習得していけば何ら問題は無いし、再び忘れたとしても調べたら良いだけです。その時は、調べ方も上手くなってるはずなので、効率は向上してると言えます。
そもそも、プログラミングで使われる膨大な数の関数を、完璧に記憶してる人なんて、職業エンジニアでも稀な部類だと思って間違いじゃないと思いますよ。
なので、プログラミング学習で”忘れたから調べる”は全然ネガティブな事ではなく、普通の事だと思ってガンガン調べて書くのが良いと思います。
理屈と疑問は後回し
プログラミング学習を始めると、こんな疑問を感じたりします。
「Hello world! って表示出来たけど何の意味が?」
「for でなんで繰り返すの?」
「x += 1 って変じゃない?」
疑問に思うのはおかしい事ではないし、確かに「何故?」と思う理由も分かります。
でも端的に言って、そんな事を疑問に思う時間が勿体ない。
「こう書いたら、こんな感じに動いた」のようにプログラミング言語を書く方法を覚える事が重要なのであって、プログラミング言語が動く理屈は重要ではありません。もちろん”何故プログラムが動くのか“を知識として学ぶことは有意義ではありますが、プログラミング学習のこの段階で気にする必要はありません。
例えば、プログラミングで頻繁に使う事になる関数の一つ
if()
ifは「もし〇〇ならOK、それ以外ならNO」みたいに条件分岐をする場合に使われます。
このifを使ったプログラムを書くとこんな疑問がうまれます。
「もし〇〇、又は△△ならOK、それ以外はNO」
「もし〇〇と△△ならOK、それ以外はNO」
などと書きたい場合はどうするの?
この疑問はifの基本「もし〇〇ならOK、もし△△ならNO」を学習した事によって生まれた疑問です。
つまり、とりあえず書いて動かしてみる事が重要で、
“疑問”は、生まれたその時に調べて解決、そして習得すれば何ら問題はありません。
プログラミングが分かる人に教えてもらうのが最善策
プログラミング学習のモチベーションとして直近の小さな目標と、理屈は無視してとにかく書いて試してみる事は分かった。次は、どんな学習方法が良いのかです。
最初に言ってしまうと、学習方法は
- 書籍やネットの情報
- プログラミングを知ってる人に聞く
- プログラミングスクール
と、特別な方法ではありません。
大事なことは、前段の
「直近の小さな目標」と、「理屈は無視してとにかく書いて試してみる」
を踏まえた上で、学習をする事です。
これを踏まえるか踏まえないかで成果に違いが現れます。
何れにせよ、[基礎]を習得するまでの辛抱です。
如何にして基礎を習得するまでを効率的に学習するか。ココが重要な点になります。
書籍やネットを使って学習
今は書籍だけで無くネットを使えば多くのプログラミングの情報が得られます。
書籍で学習する場合の問題として、情報が古くなる、間違いが訂正されない、紙面に載せられる情報が限られる、など紙媒体特有の問題もあり、総じて学習効率が悪い。優良な書籍であれば学習の手助けになってくれますが、出来の悪い書籍を購入してしまったら、尚更効率が悪く、最悪諦めてしまう事も考えられます。
プログラミングの書籍にはバイブル的な名著もありますが、学習者それぞれに合う合わないもあるので、失敗を覚悟で複数の書籍を購入して、自分にピッタリな本を見つけるしか無いですね。
ただ、そんなピッタリな本を見つける事ができたとしても、プログラミング学習の序盤は、とってもツマラナイので、そこは頑張って乗り越えるしかありません。
対して、ネットで得られるプログラミングの情報は、既にプログラミングの知識が有る人にとって有効な情報が殆どで、全くのプログラミング初心者が、ネットだけを使って0から学習しようとするのは、効率が悪い以前に、時間の無駄 になりかねません。
お金に余裕がない、暇な時間がいっぱい有る のような人以外は、違う学習方法を選択する事をおすすめします。
「書籍、ネット、の情報を有効活用できるのは、プログラミングの基本的な知識を習得した人」
つまり、プログラミングを短期間で習得するとは、この[基本的な知識]の部分を如何に効率的に学習するかという事です。
この[基本的な知識]を習得してしまえば、あとは「右の知識を伸ばすが、左の知識を伸ばすかはあなた次第」、書籍やネットの情報を有効に活用できます。
知っている人に答えを聞くの方が早い
これは良く言われる事ですが、分からない事は知ってる人に聞くのが最も早い解決方法です。間違いなく。
よく出る例えとして「外国語を習得したかったら外国人の恋人を作るのが良い」のような事と一緒ですね。
でも問題は、そんな都合よく知り合いにプログラミングが出来る人がいますか?って事。
良く言われるこの方法は、”知ってる人に聞く”ことが重要なのでは無く、運良くプログラミングが出来る人が見つかったら”ラッキー”だと思って、逃さない事が最重要なのでしょう。
幸いな事に筆者の経験上、エンジニア・プログラマーはプログラミングで分からない事があると、拒むこと無く教えてくれます。更に言えば優秀なプログラマーほど教えてくれます。
それは筆者がプログラマーでは無い事が理由の一つだったのかもしれませんが、もしそうだとしたら尚更馬鹿なふりして教えてもらうのも、結果としてプログラミングを習得できるのなら悪くないんじゃないかと。
プログラミング学習サービスの活用
プログラミングを習得する方法として、プログラミングを知ってる人に聞くのが最も早いと書きましたが、プログラミングを習得したい未経験者の周辺に、そんな都合よくプログラミング経験者がいるとは限りません。
たとえプログラミング経験者が見つかったとして、それまで全く面識がない人に
「恐れ入りますが遠い噂によると、あなたはプログラミングの知識が御有りだとお聞きしました。是非ともプログラミングを習得したい私に力を貸して頂けないでしょうか?」
何て事を言える人は稀です。
だったらプログラミングに詳しい人が簡単に見つかる、オンラインのプログラミング学習サービスを利用するのが手っ取り早くて効率的な方法でしょう。
オンラインプログラミングスクールのTechAcademy [テックアカデミー]
テックアカデミーは、メンターからアドバイスを貰いながら課題をクリアしていくタイプの、いわゆるプログラミングスクールです。
週2回のビデオチャットや、毎日のチャットサポート、現役プロのメンターから課題のレビューを無制限に受けられる等、マンツーマンのサポートで基礎からしっかり学習できます。
価格だけ見ると、二の足を踏んでしまう感じはありますが、4週間プランや16週間プランなど様々なプランやコースがあり、プランによっては他のプログラミングスクールに比べて半額に近い価格にもなります。
そしてそのプランやコース選びでユニークなのは「Python + AI」「Unity + iPhoneアプリ」のような複数のコースを受講できるお得な「セット割り」がある事。学びたいコースが複数ある場合は「セット割り」にする事で、単体のコースを複数選ぶよりも価格を押さえられます。
通常の受講コースとは別に、1~2週間で基礎から学習できるコース「トレーニング」があったり、独学では続かない人に向けた短期集中プログラムの「オンラインブートキャンプ」を開催したりと、受講しやすい環境が整備されます。
短期集中のオンラインブートキャンプに興味が湧いたら無料説明会
⇒現役のプロのメンターから学べるオンラインブートキャンプ
無料体験もあるので興味があれば是非
⇒TechAcademy 無料体験
|
まとめ:手っ取り早く基本を習得して作ってみる
非エンジニアが効率的にプログラミング学習を習得する方法を紹介しました。
あくまでも職業エンジニア・プログラマーを目指すのが目的では無く、現在の業務の効率化などを目的にしたプログラミング学習の場合を想定しています。
プログラミングを学び始めて最初にぶち当たる壁が、
- 出てくる説明文が何のことを言っているのか意味が分からないし
- 単語なのか記号なのか暗号なのかも分からないし
- 仕方がないから教材の真似して書いてみたけど動かないし
- 動いたとしてもだから何?だし
職業エンジニア・プログラマーを目標にする程のモチベーションが無いと、この段階で挫折してしまいがちです。
直近の小さい目標を掲げて、できるだけ効率的に[基礎]を乗り越える事が、プログラミング学習を続けられるコツです。
[基礎]を効率的に乗り越える方法は、プログラミングを知っている人に教えてもらうのが最善策、もし見つからないならプログラミングスクールで短期間でも良いので学んでしまいましょう。
その後は、動画教材や書籍そしてネット情報などを活用して、独学で技術力を身に付けるのが、最も効率的かつ短期間で習得できる方法でしょう。
記事内で取り上げたプログラミングスクール | |
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|