プログラミングを始めて学ぶ方に知っておいてほしいのが、「挫折をしない学び方」です。
プログラムを書くのはスキルであり、好き嫌い適正はあれど、諦めなければ一定のレベルに達することができると考えています。
今回はキャラクターの対話通して、挫折しづらい学習の進め方をご紹介します。

藤沢真人、IT業界20年のベテランエンジニアで40歳。
請負開発の会社でプログラマー、システムエンジニア、プロジェクトマネージャーとしての経験を積む。
その後、中小企業のIT支援をするために小さな会社を設立。
現在はITを活用したい会社のためのアドバイザーとして、複数の会社のコンサルティング業務を行なっている。
モットーは「すべての会社にITを」。

小さなウェブ制作会社に勤める営業マン、52歳。お願い上手のお調子者。
営業歴30年の超ベテランだが、気軽に相談しやすいことから、サイト制作以外の話もよく受けている。
ただ専門的なことはわからないので、いつも真人にお願いして困らせている。
口癖は「仲の良いお客さんだから断れないんだよ。」
プログラミングの勉強の仕方とは

真人君、ちょっと聞きたいことがあるんだけど。



大船さん、こんにちは。
今日はどうされましたか?



今度うちで新卒を採ることになったんだ。



それはおめでとうございます!
活躍が楽しみですね。



そうなんだ。
そこでプログラミングができるようになってほしくてね。



大船さんのところって、社内にプログラミングを教えられる人はいなかったですよね?



うん、そう。
だから真人君にどうやって勉強したらいいか教えてもらおうと思って。



はぁ、わかりました。
大船さんところだけですからね、ここまでお話をするのは。
最初のプログラミング本の選び方



まずは何か一冊、初学者向けのプログラミング本をやり通すのがいいでしょう。



そうだね…。
最初にやるならどんな本がいいと思う?



「初めての」、「一から学ぶ」、「7日間で覚える」といったタイトルがつく本ならどれでもいいと思いますよ。



せっかくだから、具体的な本を教えてよ。



うーん、学ぶプログラミング言語にもよるので難しいですね。
他に参考にするとしたら、出版年月日が新しくて、厚みがない本がいいでしょう。



発売日が新しいものを選ぶ理由は、新しい情報に対応している可能性が高いので。
参考書の内容が古くて動かないということもよくありますから。



そういう意味では、中古本も最初は避けた方がいいですね。
書かれている内容が今でも有効かを判断するには、ある程度の経験が必要になります。



薄いほうがいいって話だけど、内容も薄かったりしないの?



内容が薄くなることは仕方ありません。
逆にいうと、初学者がしっかりと始められるように厳選しているとも言えます。



ふーん、そういうものかい。



ええ。
それと一冊をやり切るという意味でも、最初は薄い本を選ぶことで挫折しづらくなります。



そうか。
じゃあ、簡単そうな本を何冊か購入しておくよ。



そうですね…。
複数冊を購入するのはいいんですが、同時並行で進めるのはお勧めしません。
特に同じ分野の本を同時にやると、著者の説明の仕方に違いがあると悩んでしまうでしょう。



わかった。
あくまでも一冊ずつ着実にやってもらうわけだね。



はい。
私ならそのようにお勧めします。
わからなくても先に進めれば、理解は後からついてくる



参考書はそろったとして。
学習を始めてから注意することってあるかな?



そうですね。
わからなくてもとりあえず先に進むことでしょうか。



うん?
それって大丈夫なのかい?



補足すると、理解ができなくても動くことを確認していれば問題ありません。



うーん、よくわからないんだが…
どういうことだろうか?



多くの書籍では先に説明があり、その後にコードのサンプルが載っています。
そして章の最後に練習問題があったりします。
この辺は学校の教科書と似ていますね。



そうだね。



学校のテストではテストが定期的にあるので、わからないまま進むというのは難しいでしょう。
点数に響きますからね。



うん、当然だよね。



でも、プログラミングの学習ではわからなくても先に進んでいいんですよ。



その代わりに一度は読んで、必ずコードを書いて実行してみること。
実行結果が書籍に書いてある通りであれば、内容が理解できなくても大丈夫です。



ちょっと受け入れ難いなぁ…。
本当にそれでいいのかい?



これは私の経験則になりますが、学習しているうちに理解が深まってくるんですよ。



そういうものかい?
心に留めておくよ。



そうですね。
実際に学習を進めるとわかるんですが、先の章で理解できないところが前提になるなら、戻って学習し直す必要は出てきます。



正直に言えば…。
理解はできなくても使い方がわかるなら、次の学習には進めます。



例えば、変数の理解は浅くても、変数の宣言の仕方、代入の仕方がわかるのであれば、変数の使い方がわかると言って問題ありません。



わかるようなわからないような…。
何か他に例はないかい?



それでは、料理で考えてみましょう。
例えば、包丁で野菜を切るとき、刃を下に向けて上からストンと落とせば切れるのはわかるかと思います。



包丁の基本的な使い方はそれが全てです。
なぜ包丁が切れるのか、よく切れる包丁とは?入れる角度、包丁の素材、切れ味とは何か、など細部の仕組みに目がいくとキリがありません。



料理人や包丁を作る職人になりたいなら話は別です。
プログラミングにも同じようなことが言えます。



変数の学習をしていて、自分が思った通りの動きができたら問題ないんです。
ただいつか、同じやり方では動かないときが来るでしょう。
その時に改めて変数の詳細を学習すればいいでしょう。



わかった。
僕はプログラミングをしないからうまく想像できないけど。



そういうものだと思います。
経験がないと初めは全て理解しないといけないような気がするんです。



でも学習をする目的はプログラミングができるようになることで、細部を理解してプログラミング言語を作ることじゃない。



よし、それじゃあ新人君にはどんどん進むことを意識してもらおう。



ええ。
ただ繰り返しになりますけど、必ずコードを実行して結果をみてくださいね。
自分で問題を解決するチャレンジをする



参考書が終わったら、次はどうしたらいいと思う?



そうですね、何か実際に作ってもらうのがいいでしょう。



うーん、それじゃあ社内の営業支援システムでも作ってもらうか。



いいと思います。
おそらく、途中で何をしたらいいかわからなくなるでしょうけど。



真人君、それはいいって言わないでしょ…。



少し乱暴かもしれませんが、システム開発ってそういうものでして。
やることの大体が初めてなんですよ。



新しいプログラミング言語に新しいライブラリ、新しいクラウドサービスを使って、やったことのない分野のシステムを作る。
もちろん、そのうち得意・不得意ができたり、専門性を高めたりといったことにはなりますけど。



学習し始めの段階からチャレンジすることに慣れておくと、今後の挫折が減るでしょう。



それでも、途方に暮れると困るよね。
もう少し方針はないの?



そうですね..。
わからないなら調べるしかありません。
ネットで検索し、もし詳しい人が近くにいるなら遠慮なく尋ねる。
本屋さんにも行って、自分が解決したい課題の助けになる本を探したり、それもプログラマーが求められる技術の一つですから。



スパルタだなぁ…。



意地悪しているわけじゃないですよ。
今後、業務で壁にぶつかるとき、結局、先のような方法を駆使して問題を解決しなければいけないんですから。
目的を持ってプログラミングをする



あと、初学者がプログラミング本をやっていると、だいたい飽きるんですよね。



ええっ、それは困るよ…。
業務時間で学ぶんだから、飽きると言われても。



気持ちはわかりますが、基礎の話が多いから退屈しがちなんです。



それじゃあ、どうすればいいんだい?



目的を持ってプログラミングをすることでしょうか。



目的?
参考書には練習問題も用意されているんだよね?



ええ、でも黒い画面に文字を表示するだけのプログラムでは他人に見せづらいでしょう。



えっ?ああ…。
それを見せられてもちょっと困るかなぁ…。
評価もしづらいし。



ですから、しっかりと目的を持って作るのが大事です。
自分が作ったシステムをインターネットで公開したいなら、サーバーで動かす方法も学ばなければいけません。



このように、誰かに評価される前提で作ろうと思ったとき、いろいろとクリアしないといけないことに気づくんです。



そう言った気づきが、新しい技術を学ぶモチベーションになります。



純粋に作ったものを見てほしいと言う気持ちも刺激されますからね。



なるほど。
それじゃあ、やはり社内向けのシステムをお願いして、やる気を出してもらおう。
焦らずに学習を続ければ必ずできるようになる



やあ、真人くん。
ついに新人くんを雇ったよ。



プログラマーとしての採用ですか?



うん、未経験のプログラマー募集として採用したよ。
今は基礎的な学習本を進めているところ。



学習の進み具合はどうですか?



ぼちぼちだね。
初めての経験だから時間がかかるのは当然だと思ってる。



そうですね。
長い目で見てあげれば、きっと良いエンジニアになれるでしょう。
FUNBREWでは未経験でエンジニアになりたい人を支援しています。
例えば、現在こんなお悩みがあれば、ぜひFUNBREWの一度ご相談ください。
- プログラミングを学習したいが、何から始めたらいいかわからない。
- IT業界に就職するために必要な知識が何かわからない。