初心者だけど、プログラミングができるようになりたい。
でも、そう思って勉強をしても、いつも躓いてしまう。
本当にエンジニアになれる日なんて来るんだろうか……。
どうすれば、プログラミングができるようになるんだろう。
新しい事を覚える時は、いつも苦戦しますよね。
私もそうでしたが、色々な人の協力を得て、ようやくエンジニアとして働き、今となっては肩書きも付きました。
私はとあるベンチャー企業で、10年以上エンジニアとして働いています。
この記事では、初心者がプログラミングを覚える上で、『勉強よりも大切な意識のこと』という視点で話をしていきます。
特にプログラミングを独学しようと考えている方に向けています。
勉強の手順やノウハウは、もう様々な所で公開されていると思います。
なのでここでは、勉強する前に、どんな意識で取り組めば良いのかですね。あまり教科書には載っていない部分を話せたら良いなと。
プログラミング学習で躓いてしまう方、過去の体験をもとに書いていきますので、参考になれば幸いです。
Contents
スポンサーリンク
初心者がプログラミングを独学する前に【勉強よりも大切な意識のこと】
結論、今回私がお話したい事は、以下の3つです。
- 見る・聞く・読むより『まず試す』
- 1人で勉強しない、仲間を作る
- 学習の地図をまず思い描く
これさえ意識しておけば、基本的に学習でつまづく事はないはずです。
実際私も学生時代、一度はプログラミングを諦めました。
その時、エンジニアとして働くというのはとても高い壁のように考えていたのを、今でもよく覚えています。
今でも、一部の超・優秀な方とは比較にならない人間です。でも、エンジニアとして働く事はできているし、技術を人に教える立場です。
プログラミングというのは、勉強方法に少しコツがあります。
学校で授業を受ける感覚でいると、中々できるようにならないんです。
その点が詳しく説明できればと思います。
見る・聞く・読むより『まず試す』
プログラミングを覚えられないでいた期間と、徐々にできるようになった期間、何が違うのかと言えばこれでした。『まず試す』です。
断言できるのは、プログラミングというのは『できる事を積み重ねで増やしていく』というものです。
そのため、本で読んで「あー、こういうものか」と思っても、実際にはプログラムを組む所までは行けません。
実際に作ろうと思っても、何から始めて良いのか分からず途方に暮れる事があります。
ここで、発想の転換が必要になります。
「分からない事を覚える」のではなく、「分かっている事から試す」という方向に切り替えるんです。
この1つの意識だけで、プログラミングが「分からない」から「分かる」に変わっていきます。
作るものにしても、いきなり形のある、人に使ってもらえる商品を作る所から始めようと思うと失敗します。
まずは、誰にでもできる、分かる所から始めて、分からない事に1つずつチャレンジしていく姿勢が重要です。
誰が見たってこんなもの書かなくても分かるだろう、と思う所でも書くんです。
実際に動かしてみると、自分の中に『本を見なくても書ける』という知識が増えてきます。
本を見なくても分かるようにならないと、本当に難しい部分が読み解けないんですよ。
だから、まず試すことですね。
1人で勉強しない、仲間を作る
次に、1人で勉強しないというのが大切です。
これには2つの意味があります。
- 分からない所を分かる人に聞くことができる
- 集まる習慣を作ることで、プログラミングから逃げなくて済む
定期集会化して、継続して勉強できるように努力すると良いです。
プログラミングって、覚え始めの頃はものすごくつまらないです。
作っているものも一体何なんだかよく分からないですし、覚えている内容も「こんなもの覚えて、一体将来の役に立つんだろうか」という、思春期の中学生みたいな気持ちに襲われます。
後から考えると確実に必要な事だったと分かるのですが、学習している当時は分からないんですよね。
だから、仲間を作りましょう。みんなで楽しく覚えることで、少しでも苦手意識が克服できます。
もし、どうしても仲間を作るのが難しければ、プログラミングスクールを使うのがおすすめです。
実際私も学校に行って覚えましたし、それに百万以上のお金を使いましたので、より少ないお金でプログラミングが勉強できるのは得だと思います。
参考現役エンジニアが未経験IT転職のポイントを3つ解説する【初心者向け】
続きを見る
学習の地図をまず思い描く
なんとなく、プログラミングって世の中に出回っているような、すごいシステムが作れるようになることを目標にして、漠然とやりがちなんですよね。
そこで、まず学習の地図を思い描くこと。これが大事かと思います。
地図と言っても、いきなり自分が知っているあのアプリケーションが作れるようになる! など、欲張らないことですね。
たとえば、簡易的なチャットアプリが作れるようになるとか。これだけでも、ゼロベースの初心者だと手順はかなり多いです。
はっきり申し上げておくと、世の中に出ているほとんどのアプリケーションはですね、ちょっとしたツールみたいなものでもなければ、1人だけで作られている事ってまーぁ無いです。
確かに中には1人で作っている方も居るんですけど、それはもう途方もない努力の超人です。
初心者から見ると間違いなくそう思えるので、まずいきなりそこを目指さないことです。
だから、たとえばゲームとかですね、ああいったすごいものを目標にしてしまうと、挫けてしまう可能性が高くなります。
プログラミングって、階段なんですよ。
いきなり100段の高さを飛び越えようとしても無理で、半年とか1年とかかけて、ゆっくりゆっくりと上がっていくと、気がつくと目標のものが目に見える位置にあると。
そういうものだと思うんですね。
私はプログラミングを人に教える事もやってきたのですが、プログラミングを挫折してしまう若い方の多くは、自分の目に触れている、あの素晴らしいシステムを自分の手で! と考えてしまうんです。
目標のハードルがとても高い状態にある訳です。
だから、いきなりそこを目指してプログラムの解読を始めるのではなくて、地図を思い描いて一歩ずつ詰め寄ること。
- 環境構築ができる
- ifやforなどの、基本的な文を書いて動かすことができる
- 構造体が理解できる
- ポインタ(アドレス渡し)が理解できる
- クラスが理解できる
- 他の人が作ったライブラリを流用して開発ができる
- フォームアプリケーションが作れる
- クライアント・サーバーの仕組みが理解できる
- 簡単なチャットアプリが作れるようになる
こんな感じで、地図を作るのがとても大事だと思います。
私が人に教える時は、こんな風に初心者の方でも理解できるように、ざっくりとした概要から入って、細部を説明していく事が多いですね。
初心者が独学でのプログラミングを挫折しそうになったら
上記のことを意識していても、プログラミングを挫折しそうになってしまうタイミングというのはあるものです。
プログラミングスクールなどを利用していれば挫折がリスクになるので、無理矢理にでも勉強に打ち込む事があるかと思います。
しかし独学の場合はそういったリスクがないので、『なんとなくやめる』というのが成立してしまうんですよね。
そこで、プログラミングを独学でやっていた時、挫折しそうになるタイミングについて話していければ良いかなと。
挫折にはポイントがある
まず、プログラミングを学ぶ上で、多くの人が挫折する場所はある程度、決まっています。
これを私は『プログラミングの脱落ポイント』として捉え、人に教えていく中で、より丁寧にやる事を意識するようになりました。
ということで結論から言ってしまうと、多くの方が脱落しがちなポイントは以下です。
- アドレス渡しとポインタ
- オブジェクト指向とクラスの考え方、使い方
- フォームアプリケーションの作り方
- 複数の要素間の連携(PHPとjsや、プログラミング言語とデータベースなど)
- 並列処理(フォーク・スレッドとキュー)
他にもありますが、私が教えた中で最も習得に苦労していたのがこの5つでした。
もちろん今の段階では、中身はよく分からなくて大丈夫です。あーこんな項目があるんだー、くらいに思っておいて頂ければ。
まあちょっと、私の教え方の力量もあるので、全員がここでつまずくという事ではないのですが……。
これまでに覚えたものを使うだけでは達成できず、視野を広げて考えなければならない。
こんな部分で引っかかる事が多いように感じます。
なので逆に言うと、プログラミングというのは挫折するポイントというものがあること。
そして、その挫折するポイントでは、今までとは違った視点で物事を考えてみる必要があるんだ、ということ。
最初からこの2つを意識しておけば、挫折しそうになった時に、踏ん張る力になるかなと思うんです。
少なくとも当時、私がこれを教えられていれば挫けなくて済む部分って沢山ありましたし、先生というのはここを通過しているので、中々思い出して教えてはくれないんですよね。
ここを意識してみてください。
できている事を応用して、挫折ポイントを細分化する
これは誰かが言っていたんですが、プログラミングというのは、抽象化と具体化の繰り返しなんです。
頭の中で思い描いた、「こうすれば動くはずだ」という仮定をもとにプログラムを作り、それを実際に動かしてみることで、答え合わせをする。この連続なんですね。
なので挫折しそうになってしまった時は、自分が一体何が分からなくて挫折しそうになっているのか、内容を細分化しましょう。
何が分からないのかも分からないという状態になってしまった時は、ひとまず自分ができている事を反芻します。
できている部分と、できていない部分。ここをまず、明確にしなければなりません。
ここが結構大事で、頭の中で思い描けなかったプログラムは作る事ができないんです。
これはよく軽視されがちで、「プログラムなんて、人の作ったライブラリを流用して作るコピペみたいなものだよ」と話すエンジニアの方を沢山知っています。
人が作ったものでも、中で何が起こっているのかある程度は理解できなければ、使うことはできないんですよ。
問題が起こった時に分からなくなってしまうんですね。
なので、初心者の方にはぜひ、『分からない部分』というのを、人が作ったものを流用することで投げずにですね。
一歩ずつでも良いから、自分の手で作ってみる。そのために何が分からないのかは、試行錯誤しながら寄ってみる。
たとえば、自分の作った関数が、予定通りの挙動をしなかったとしましょう。
そうしたら、まず引数を見直してみる。色々な値を与えて、戻り値の変化を探ってみる。
並列処理されている他のプログラムが、邪魔してはいないか。機能していないステップがないか。うまく書けているようで、実はお互い潰し合っているという事があるんじゃないか。
様々な仮定を考えるという癖を付けるようにしておくと、指数関数的な速度でプログラミング能力というのは、上達していくように感じます。
初心者のプログラミング独学は、さながら『山登り』である
プログラミングって、山登りです。
晴れている時に順調に進めても、ひとたび天候が変わって、雨になると動けなくなる。
夜は光がないので迂闊に動けないし、雪が降ったら身の危険に晒される。
自分には予測できない所にハードルがあったりもするので、『自分にとって都合の悪い展開』の時にはじっと耐え、『自分にとって都合の良い展開』になったら、思う存分作ってみる。
こんな事を意識すると、独学でも挫ける事が減るように思います。
私もまだまだ道半ばではありますが、これからプログラミングを学びたいと思う初心者の方には、これらの事を意識して始めるようにして頂けると、心が負けずに済むかと思い、今回はこんな記事を書いてみました。
これを読んでくれた皆さんの役に立てば幸いです。