プログラミングを始めて学ぶ人に知っておいてほしいのが、「挫折をしない方法」です。
プログラムを書くのはスキルです。
好き嫌いや適正はありますが、諦めなければ必ず一定のレベルに達することができます。
ですから、挫折して辞めてしまうのは非常にもったいないことです。
「始めたからには始めたからには書けるようになってほしい」
そんな気持ちで今、この文章を書いています。
今回はキャラクターの対話を通して、挫折しづらい学習の進め方をご紹介します。
藤沢真人、IT業界20年のベテランエンジニアで40歳。
請負開発の会社でプログラマー、システムエンジニア、プロジェクトマネージャーとしての経験を積む。
その後、中小企業のIT支援をするために小さな会社を設立。
現在はITを活用したい会社のためのアドバイザーとして、複数の会社のコンサルティング業務を行なっている。
モットーは「すべての会社にITを」。
小さなウェブ制作会社に勤める営業マン、52歳。お願い上手のお調子者。
営業歴30年の超ベテランだが、気軽に相談しやすいことから、サイト制作以外の話もよく受けている。
ただ専門的なことはわからないので、いつも真人にお願いして困らせている。
口癖は「仲の良いお客さんだから断れないんだよ。」
プログラミングの学習方法
真人君、ちょっと聞きたいことがあるんだけど。
大船さん、こんにちは。
今日はどうされましたか?
今度、うちで新卒を採ることになったんだ。
それはおめでとうございます!
活躍が楽しみですね。
そうなんだ。
そこでプログラミングができるようになってほしくてね。
大船さんのところって、社内にプログラミングを教えられる人はいなかったですよね?
うん、そう。
だから真人君にどうやって勉強したらいいか教えてもらおうと思って。
はぁ、わかりました。
大船さんところだけですからね、ここまでお話をするのは。
最初のプログラミング本の選び方
まずは何か一冊、初学者向けのプログラミング本をやり通すのがいいでしょう。
そうだね…。
最初にやるならどんな本がいいと思う?
「初めての」、「一から学ぶ」、「7日間で覚える」といったタイトルがつく本ならどれでもいいと思いますよ。
せっかくだから、具体的な本を教えてよ。
うーん、学ぶプログラミング言語にもよるので難しいですね。
他に参考にするとしたら、出版年月日が新しくて、厚みがない本がいいでしょう。
発売日が新しいものを選ぶ理由は、新しい情報に対応している可能性が高いので。
参考書の内容が古くて動かないということもよくありますから。
そういう意味では、中古本も最初は避けた方がいいですね。
書かれている内容が今でも有効かを判断するには、ある程度の経験が必要になります。
薄いほうがいいって話だけど、内容も薄かったりしないの?
内容が薄くなることは仕方ありません。
逆にいうと、初学者がしっかりと始められるように厳選しているとも言えます。
ふーん、そういうものかい。
ええ。
それと一冊をやり切るという意味でも、最初は薄い本を選ぶことで挫折しづらくなります。
そうか。
じゃあ、簡単そうな本を何冊か購入しておくよ。
そうですね…。
複数冊を購入するのはいいんですが、同時並行で進めるのはお勧めしません。
特に同じ分野の本を同時にやると、著者の説明の仕方に違いがあると悩んでしまうでしょう。
わかった。
あくまでも一冊ずつ着実にやってもらうわけだね。
はい。
私ならそのようにお勧めします。
これから始めてプログラミングを学ぶなら、出来るだけ簡単そうに見える本を選びましょう。
薄くて、文章が簡易で、図や絵がたくさん載っているような、そんな本をおすすめします。
始めて「やるぞ!」と思った瞬間は、辞書のような本を選びたくなりますが、やり通すだけの強い意識が必要になります。
まずは簡単な本から、「一冊できた!」という達成感を味わってみてください。
わからなくても先に進めれば、理解は後からついてくる
参考書はそろったとして。
学習を始めてから注意することってあるかな?
そうですね。
わからなくてもとりあえず先に進むことでしょうか。
うん?
それって大丈夫なのかい?
補足すると、理解ができなくても動くことを確認していれば問題ありません。
うーん、よくわからないんだが…
どういうことだろうか?
多くの書籍では先に説明があり、その後にコードのサンプルが載っています。
そして章の最後に練習問題があったりします。
この辺は学校の教科書と似ていますね。
そうだね。
学校のテストは定期的にあるので、わからないまま進むというのは難しいでしょう。
点数に響きますからね。
うん、当然だよね。
でも、プログラミングの学習ではわからなくても先に進んでいいんですよ。
その代わりに一度は読んで、必ずコードを書いて実行してみること。
実行結果が書籍に書いてある通りであれば、内容が理解できなくても大丈夫です。
ちょっと受け入れ難いなぁ…。
本当にそれでいいのかい?
これは私の経験則になりますが、学習しているうちに理解が深まってくるんですよ。
そういうものかい?
心に留めておくよ。
そうですね。
実際に学習を進めるとわかるんですが、先の章で理解できないところが前提になるなら、戻って学習し直す必要は出てきます。
正直に言えば…。
理解はできなくても使い方がわかるなら、次の学習には進めます。
例えば、変数の理解は浅くても、変数の宣言の仕方、代入の仕方がわかるのであれば、変数の使い方がわかると言って問題ありません。
わかるようなわからないような…。
何か他に例はないかい?
それでは、料理で考えてみましょう。
例えば、包丁で野菜を切るとき、刃を下に向けて上からストンと落とせば切れるのはわかるかと思います。
包丁の基本的な使い方はそれが全てです。
なぜ包丁が切れるのか、よく切れる包丁とは?入れる角度、包丁の素材、切れ味とは何か、など細部の情報に目がいくとキリがありません。
料理人や包丁を作る職人になりたいなら話は別です。
プログラミングにも同じようなことが言えます。
変数の学習をしていて、自分が思った通りの動きができたら問題ないんです。
ただいつか、同じやり方では動かないときが来るでしょう。
その時に改めて変数についてもっと深く学習すればいいでしょう。
わかった。
僕はプログラミングをしないからうまく想像できないけど。
そういうものだと思います。
経験がないと初めは全て理解しないといけないような気がするんです。
でも学習をする目的はプログラミングができるようになることで、細部を理解してプログラミング言語を作ることじゃない。
よし、それじゃあ新人君にはどんどん進むことを意識してもらおう。
ええ。
ただ繰り返しになりますけど、必ずコードを実行して結果をみてくださいね。
プログラミングと聞くと、バリバリの理系で、ロジカルに物事を考えられる人が得意だと思うかもしれません。
そういう側面が強いのは否定しませんが、スポーツのように体感して学ぶという要素もあります。
想像できないものを理解するのは難しいですから、まずはコードを書いて動かしてみて、体験してみてください。
その後に少し戻って、「なぜこの結果になったのか」を考えると、より理解が深まるでしょう。
自分で問題を解決するチャレンジをする
参考書が終わったら、次はどうしたらいいと思う?
そうですね、何か実際に作ってもらうのがいいでしょう。
うーん、それじゃあ社内の営業支援システムでも作ってもらうか。
いいと思います。
おそらく、途中で何をしたらいいかわからなくなるでしょうけど。
真人君、それはいいって言わないでしょ…。
少し乱暴かもしれませんが、システム開発ってそういうものでして。
やることの大体が初めてなんですよ。
新しいプログラミング言語に新しいライブラリ、新しいクラウドサービスを使って、やったことのない分野のシステムを作る。
もちろん、そのうち得意・不得意ができたり、専門性を高めたりといったことにはなりますけど。
学習し始めの段階からチャレンジすることに慣れておくと、今後の壁にぶつかったとしても簡単に諦めてしまうことは減るでしょう。
それでも、途方に暮れると困るよね。
もう少しぐらい方針はないの?
そうですね..。
わからないなら調べるしかありません。
ネットで検索し、もし詳しい人が近くにいるなら遠慮なく尋ねる。
本屋さんにも行って、自分が解決したい課題の助けになる本を探したり、それもプログラマーが求められる技術の一つですから。
スパルタだなぁ…。
意地悪しているわけじゃないですよ。
今後、業務で壁にぶつかるとき、結局、先のような方法を駆使して問題を解決しなければいけないんですから。
少しプログラミングの学習をすると、膨大な情報に途方に暮れるかもしれません。
言語の基本的な文法やライブラリの使い方などは、ある程度覚えておいた方が楽ですが、全てを暗記する意味はありません。
大事なのは解決の仕方を知っておくことで、調べたらわかるという状態に常にあれるようにすることです。
例えば、AWSの勉強をしておくと、他のクラウドサービスで出来ることもおおよそわかります。
概念を理解して覚えておくことで、調べたら他の技術でも使うことができるという自信を身につけましょう。
目的を持ってプログラミングをする
あと、初学者がプログラミング本をやっていると、だいたい飽きるんですよね。
ええっ、それは困るよ…。
業務時間で勉強するんだから、飽きると言われても。
気持ちはわかりますが、基礎の話が多いから退屈しがちなんです。
それじゃあ、どうすればいいんだい?
目的を持ってプログラミングをすることでしょうか。
目的?
参考書には練習問題も用意されているんだよね?
ええ、でも黒い画面に文字を表示するだけのプログラムでは他人に見せづらいでしょう。
えっ?ああ…。
それを見せられてもちょっと困るかなぁ…。
評価もしづらいし。
ですから、しっかりと目的を持って作るのが大事です。
自分が作ったシステムをインターネットで公開したいなら、サーバーで動かす方法も学ばなければいけません。
誰かに評価される前提で作ろうとすると、いろいろとクリアしないといけない問題に気づくんです。
そう言った気づきが、新しい技術を学ぶモチベーションになります。
純粋に作ったものを見てほしいと言う気持ちも刺激されますからね。
なるほど。
それじゃあ、やはり社内向けのシステムをお願いして、やる気を出してもらおう。
学校で英文法を習ったとき、退屈しませんでしたか。
プログラミング言語も英語と同じように、学習するのは退屈だと思う人が多いでしょう。
しかし、もし英語を学ぶ目的が海外で活躍したいという理由だったらどうでしょう。
プログラミングも同じで、再度目的を認識すれば学ぶ意欲も湧いてくるでしょう。
焦らずに学習を続ければ必ずできるようになる
やあ、真人くん。
ついに新人くんを雇ったよ。
プログラマーとしての採用ですか?
うん、未経験のプログラマー募集として採用したよ。
今は基礎的な学習本を進めているところ。
学習の進み具合はどうですか?
ぼちぼちだね。
初めての経験だから時間がかかるのは当然だと思ってる。
そうですね。
長い目で見てあげれば、きっと良いエンジニアになれるでしょう。
もし挫折しそうになったら君が見てあげてくれ!
そのときは別料金でくださいね。
ファンブリューではエンジニアになりたい人を支援しています。
現在こんなお悩みがあれば、ぜひ一度ご相談ください。
- プログラミングを学習したいが、何から始めたらいいかわからない。
- IT業界に就職するために必要な知識が何かわからない。
- 実務経験がなくて現場に入れない