どうやってプログラミングスキルを習得したか?
をお話したいと思います。プログラミングやってみたいけど、
どう始めたらいいかわからないという人の参考になればと思います。
最初、私がプログラミングを持った興味のきっかけが
機械学習やデータサイエンスであり、
WEBサービスの実装だったりは
しないのでその前提でお読みいただければと。
プログラミングなどの本を色々読んでいましたが、
なかなか身につかず。
自分はプログラミング、向いていないのかな?
やっぱりこのまま営業(当時)で頑張ったほうがいいのかな?
と限界を感じていました。
とはいえ、自分のやりたかったこともあるので、
自分でグダグダ考えているだけでなく、
先生や講師など、他の人の意見を聞きたいと思っていました。
きっかけ
そんな時、NEDO主催の社会人講座の募集が目に付きました。
※残念ながら現在は募集していないようです。
運良くこの講座を受講することができましたが、
この講座が私のプログラミングの考え方が
大きく変わったきっかけです。
講座の中で課題があるのですがその答え合わせの時の講師が、
東大情報理工の大学院の学生の人でした。
問題はPythonの辞書を使って
ソートを行う問題だったように記憶してます。
アルゴリズムの問題ですね。
初っ端で講師の方が言ったのが
「みなさん、わからない時、どうしてますか?
もしわからない事があったら、とりあえずググってください。
Pythonだと何かしら答えやヒントがあります」
でした。その時ちょっとショックを受けました。
東大の情報理工の大学院の院生でも、わからないことはあるし、
ググったりするんだなと。
今まで、
「プログラミングができる」
=「すべてが頭に入っており、
アイデアをそのままコードに落とし込める」
と考えていたのですが、全然そうではなく
「プログラミングができる」
=「わからないことがあったら、試行錯誤
&都度都度調べて、一つずつコードに落とし込む」
ということがわかった事で、
だいぶ勇気というか背中を押してもらった一言でした。
その一言以来かなりプログラミングに対する
取り組み方が変わったのです。
そこでわかったことコツを書きます。
プログラミングを学ぶ際のコツ
・プログラミングはブロックで考える
他人が書いた完成したコードを見ると、
自分にはとてもこんなコードは書けないと感じると思います。
しかし実際は一つ一つの計算式やロジックを、ブロックのように
地道にコーディングして
積み上げている手法がほとんどだと思います。
まずは、一つ一つブロック化して考える事が重要だと思います。
プログラミングは一つ一つ、
細分化・ブロック化していくことが重要だと考えています。
・わからないことはググる
あなたが躓いていることは、
世界で誰かしら躓いています。
Google翻訳をフル活用して、世界中の躓きを探しましょう。
Pythonであれば何かしら見つかります。
躓き集で代表的なものは
です。最近は中国語で出ることも多いですが、
Google翻訳で一発で日本語になるので、
こちらも有用な情報が落ちていたりします。
・他人のコードをパクる
プログラミングでは、
リバースエンジニアリングが非常に重要です。
他人の書いたコードはすごい読みにくいですが、
読み解けば自分の血肉になります。
GitHubgithub.com
などで、
世界中の誰かしらが自分が欲しいと思ったコードを
公開してくれています。
最初は読み解くのに時間がかかるのは当然なので、
じっくり一行ずつコードを読み解いていけば
かなりの血肉となります。
・「ハマり」を恐れない
コーディングしている中で、
誰しも「ハマる」時があります。
どうやってコーディングしていいかわからない、
コーディングしてもうまく動かない、
うまく動いても望んだ結果が出ない、
などの経験に出くわします。
ただ、ここでウンウンうなって、
最後に何とか解決できたときのカタルシスは、
プログラミングを学ぶ喜びと楽しみの一つでもあります。
自分だけではなく、みんなも「ハマっている」と考えて、
安心して思う存分「ハマり」ましょう!
どんな言語、環境がおすすめ?
いまはPython、Anaconda、Jupyterを
使ったコーディングがおすすめです。
私が重要だと思うのは、対話型コーディングです。
対話型コーディングとは、
電卓のようにコードを打ち込んだら結果がでる、
対話式のコーディング手法です。
これにより、プロトタイピングが飛躍的にやりやすくなりました。
さらにPythonではエラー内容が比較的細かくでる言語なので、
どこかで引っかかっても解決しやすいです。
Anacondaで始めよう!
Anacondaでインストールすれば、
Python
対話型コーディングが可能となるJupyter Notebook
Numpy、Pandas
など必要なライブラリを揃えていっきに環境構築できます。
インストール方法は、WEB上で多くの情報があがっていますので、
ぜひ参照してみてください。
-----広告-----