最近Web系の言語が楽しくなってきたイエスキです!
普段はSIer(エスアイヤー)でそこそこ大きなシステムの片隅をいじってます
今年未経験で入った新人が『才能ないんですかね...』なんて、変なことで悩んでたので『それは違うぞ!』って話したのですが、他にもそんな人がいたらもったいないなぁと思ったので、説明します
プログラミング学習に才能は必要ないし、3つの習慣だけ大事にしていればそのうち慣れます!
- クラス??メソッド??オブジェクト??横文字多すぎ
- '()'丸カッコや'{}'中括弧はどっち使えばいいの
- エラーばっかりで全然うまく行かない
- もう何もかもがわからないし覚えられないよぉ

もしそんなことで落ち込んでいるなら、落ち込む必要ないよって伝えたい
なぜかというと、エンジニアだって覚えてないし、触れたことない技術はわからないから
でもなんとかなるんです!
これから説明する習慣さえ守れば、誰でも覚えられるしそこに才能は必要ない!
すいません怪しい勧誘みたいな言い回しみたいになりました
でもそれが事実で、僕は後輩にそのまま教えてますし、それが上達の近道だと確信しています
だから、訳わからなくなってプログラミングが嫌いになる前に、この習慣を身に着けて、余計なことで悩まないでほしい
- プログラミング学習は覚えることを重点においてはいけない
- 他の勉強と一緒で『読んで』『調べて』『考える』事が大事
プログラミング学習において大事な3つの習慣
新人が入ってきたら何度となく促してきたのはこれら習慣ですね
習慣が定着してきて『結果を確認をしてもらいたい』ってくるようになったら、新人からステップアップした証拠
この習慣に才能 が必要なところなんて無いんです!
エラーログを読む
最初の内は何もかもがわからないから、エラーが出た時

どこが間違ってたの??
ってソースに目線を戻しがち
でもそうじゃない
見るべきところは『なんかエラー出てる・・・』っていうそのメッセージ(エラーログとも言います)
エラーログには簡単な英語で‘この行のこの部分がダメだよ'って書いてあるんです
とりあえず読んでみると初心者でも意外と解決できます
このエラーログを読むという習慣はとても大事で、

あの時と同じログだからこう直せば良いんだな
という感じになるし、それができれば初心者脱出の第一歩です
最初は『読んでもよくわからない』でもいいので、とりあえず読む事が大事
次で説明しますが、答えは大概ネットの海に転がってます
まず検索する
『そんなの言われなくても検索するよ』って思うかも知れないけど、これとても重要なんです。
エンジニアの人たちは技術情報の発信をする人も多いので、初心者が困ったことの解決法は大体検索すれば答えが出てきます
- エラーが出たから、エラーメッセージで検索
- 判定したいけど書き方がわからないから『ruby 判定』で検索
- 知らない単語でてきたなぁ『git コンフリクト』で検索 等々
いろんな角度から検索して目的の情報を取ってくる検索力が、エンジニアには重要です
次で深く解説しますが、エンジニアはプログラミング言語を暗記しているわけではないので、どう実装するか何度も検索します
教科書を見てても遭遇しない事柄がいっぱいでてくるんですよね
それを解決しているといつの間にか力がついてきます!
あと、検索しても見つからない場合はteratailで検索するのもひとつの良い手ですよ!
すごい人達が、解決法を教えてくれます
言語ではなく動き(ロジック)を考える
エンジニアだからってはじめて学ぶプログラミング言語を一発で覚えられる人なんていないです。
だからといって、習得までのスピードが初学者と同じかというと、そうではない!
なぜかと言うと、プログラミング言語という『手段』は多種多様にあるけど、どう動けば必要なものが求められるかという『ロジック』はほぼ変わらないから
たとえば、
キーボード入力された数字が偶数なら『偶数です』、奇数なら『奇数です』と出力する
そんな動きを作りたいという場合どうですか?
これをあまり触れたことない言語(僕ならPHPとかですかね)で書けと言われた場合、エンジニアの思考はこんな感じ
- キーボード入力
- 数字が2で割り切れるか判定
- 割り切れたら『偶数です』と出力
- 割り切れないなら『奇数です』と出力

と言った具合に動けばOKそうだなぁ
あとは『PHP キーボード入力』とか検索して組み合わせれば完成するはず
こんな風に、手段を後から付け加えるので、PHPのキーボード入力の記述方式を暗記なんてしちゃいないんです。
エンジニアが新しい言語を習得するときは、この言語ってこんな書き方するんだなぁ
ってなんとなく覚えて、実践しながら定着させる
アウトプットメインだから初学者よりも習得が早いんですね
なので初学者は
- 複数回同じことやりたいときは『繰り返し処理』ってモノがあるんだな
- 処理が長くなって見づらくなるから『関数』?ってもの使えば分けられるんだな
と言った感じで動きを想像してふんわり覚えたらあとは手を動かす!
言語によって変わってくる括弧の違いとか、そんな細かいところはいつの間にか覚えてます
(覚えているってより、感覚でこっちっぽいなって感じ)
まとめ:プログラミング学習に才能は必要ない
プログラミング学習に大事な3つの習慣に触れてきました
一つ一つはそんな難しいことを言っていないです
- ちゃんと読む
- わからないことを調べる
- 考えて、やってみる
新人を見ていると大概これらができていない
他の勉強と同じなんですけど、プログラムという『よくわからないモノ』だから戸惑うんでしょうね
僕は英語とかに置き換えて考えたりしてました
新しい『言語』を覚えているのだから難しくて当然じゃん!
でも、難しいけどだんだん『読めるようになる』『使えるようになる』それが楽しい って
人手不足のエンジニア業界に一人でも多く新しい芽が育ってほしいですね
いじょー!!