こんにちは。LIGフィリピン支社代表のせいと(@seito_horiguchi)です。
最近、趣味でPythonの勉強をはじめました。いやー、面白いですね、Python!今まで僕は、フロントエンド系の言語ばかりやってきていたので、なんだか新鮮です。
せいとLIGフィリピン・セブ島支社代表/エンジニア教育担当 10歳からプログラミングをはじめる。著書に『最強のCSS設計(ソフトバンククリエイティブ社)』がある。 |
さて、今回はプログラミングの勉強をはじめたての方、これからはじめようとしている方向けに、どんな風に進めれば効率よくプログラミングが学習できるのか?を自分なりに書いてみました。
一番手っ取り早い方法としては、初心者でも歓迎してくれて、ある程度面倒見の良い会社に長期でインターンシップに行くことだと思います。僕もそうした経験がありますが、実際に実務に取り組めて、かつ困ったら複数の先輩方に聞ける、という環境は心強いです。
LIGフィリピン支社でもインターンシップの募集をしておりますよ(^ω^)
それはさておき、誰もがインターンシップに行ける状況ではないでしょうから、それ以外でいい方法を7つまとめてみました。参考にしてもらえたらうれしいです。
もくじ
- はじめはブログ記事よりも本を読もう!
- ゴールを決める、たくさんつくる
- とにかく”写生”する
- すべてを覚え、理解する必要はない。100点は目指さず、60~80点の理解で次に進もう
- 常に楽することを考えよう。そして多くの場合、楽はできる!
- 情報のキャッチアップは習慣にしよう
- よきメンターを見つける
1.はじめはブログ記事よりも本を読もう!
これから勉強をはじめようと思っている言語に対して、もしまだ基本のキも未習得な状態なのであれば、まず基礎を学ぶ必要があります。そしてそのためには、“体系化された知識”をインプットすることが最も効果的です。
すごく大雑把にいうと、「本読もうぜ!」ということですね。JavaScriptならJavaScriptの入門書を、PythonならPythonの入門書をAmazonとか紀伊国屋で買いましょう。ブログ記事などはオススメできません。
なぜかと言うと、本は情報が体系化されています。例えばJavaScriptの入門書なら、「JavaScriptの知識がゼロの人のために、必要な情報を順序立ててまとめあげたパッケージ」になっています。
さらに、本は商品として売られているものですから、出版されるまでに書き手や経験豊富な編集者の厳しい目が何度も入っています。そのため、情報としての質が高いんですよね。
逆にブログの場合は情報としては断片的で、書き手のレベルもバラバラです。ある程度知識のある人が知りたい情報だけを得るためにアクセスするならOKですが、まったくの初学者ならば、まず本を読むところからスタートしたほうがいいでしょう。また、プログラミングの情報はアップデートが早いため、発行日ないし改訂日が1年以内のものが望ましいです。
ちなみに、わかりやすくお伝えするためにとりあえず「本を読もう」と言いましたが、要は質が高くて体系化された情報であれば何でもいいのです。最近は、オンライン上で学習できるサービスも多いですし、もし自分にとってやりやすいものが見つかればそれを使うのもいいでしょう。
2.ゴールを決める、たくさん作る
プログラミングを学ぶ際、ゴール設定を都度都度しっかり行うことをオススメします。ゴールは小さなものでいいので、できるだけ具体的なほうがいいです。例えば、ゼロからJavaScriptをはじめるならこのような感じでしょうか。
- 仕様や文法、メソッドを理解する(1〜2ヶ月目)
- “スクロールしたらヘッダーが追従してくる機能” を実装する(3ヶ月目)
- jQueryで “スライダー” を実装する(4ヶ月目)
- Web上で動く4択のクイズゲームを実装する(5〜6ヶ月目)
具体的なゴールとマイルストーンを決めることで、だらけたりモチベーションが低下したりをなるべく防ぎましょう。また、仕様や文法、メソッドは基礎なのでまずやらないとですが、それ以降はなるべく「何を作るか」にフォーカスすることをオススメします。
一番よくないのは、ひたすら文法や問題集のようなもので勉強し続けていくことです。プログラミングは何かプロダクトを作るための手段ですから、そのように取り組むことで初めに学んだ文法やメソッドが、実際に機能を実装する場面ではどう活きるのかが分かります。
3.とにかく“写生”する
漫画やデザインのプロ曰く、初めはまず模倣から入り、下積み時代は写生をしてスキルを鍛えた……などというエピソードがよくあります。実は、これはプログラミングの学習においても同じことが言えます。
プログラミング上での写生は、自分が作りたい機能のコードや、テキストに書いてあるコードをまったく同じようにタイピングして写し、不明な命令や文法に出くわしたら都度ググる、という方法が向いています。
PC上なので丸々コピペしちゃうこともできますが、それだと覚えないのでなるべく手で入力するといいでしょう。直に入力していくことで、文法や構造、メソッドの理解・記憶に繋がることが期待できます。自分で書いたことがないものを使えるようにはなりませんからね。
ちなみに、僕は今Pythonの勉強にPyQというオンラインの学習サービスを使っていますが、そこでも写生を取り入れた学習方法が用いられています。
4.すべてを覚え、理解する必要はない。100点は目指さず、60〜80点の理解で次に進もう
一つひとつ完全に習得できなければと思ってしまい、それができるまでは次の段階に行けない……というのは真面目な人や完璧主義な人にありがちです。気持ちはすごく分かります。
でも、実務レベルのスキルを効率よく習得する場合、100点を取る必要はありません。例えば、皆さんおなじみのHTMLは実に108個のタグを有しますが、実際実務でよく使うのはその半分以下、あとは使うとしても稀です。
その他にも、そもそも概念的に難しい仕様があることも多々ありますが、その場合は学校の勉強と同じで1周目はそこそこの理解をして、2周、3周してようやく大体把握できます。なので、分からなくてもとにかく先に進めましょう!その後で、苦手だった部分は何周かすればいいのです。
5.常に楽することを考えよう。そして多くの場合、楽はできる!
これは学習スピードを上げる上で、また実務をスピーディーに行う上でも大変重要です。とにかく、ショートカットおよび、ツール&アプリを使いこなすことで楽をしましょう!
まずショートカットですが、大抵のアプリにはショートカットが備わっています。Microsoft Office、Google Chrome、Adobe製品、各種エディタ……etc。そしてアプリのショートカットは、総じて大体同じキーが対応しています。
「新規でファイルを作成」なら「command + N」、「閉じる」なら「command + Q」など(自分Macユーザーなので、Windowsの人ごめんなさい)。
マウスカーソルを画面の上の方に移動させてクリックとかやっているそこのあなた!ショートカットを使いましょう!初めは対応しているキーが分からずテンパるかもしれませんが、慣れれば劇的に効率が上がっていくはずです。
また、楽をするために常によさげなツール&アプリを探して取り入れていきましょう。プログラミングを進めていると、けっこうな頻度で「この作業面倒だなあ」と、思うことがあると思います。例えば、僕がプログラミングをはじめたばかりの頃は、よくこういうことを思っていました。
- いちいち全部タイピングするのが面倒
- エラーが起きた際、具体的にどこの箇所で、何ゆえ起きているのか把握するのが面倒
- タイピングミスに気づけないのが辛い
皆さんもこうした悩み、あるんじゃないでしょうか?でもこういう面倒臭さは大抵、解決できるツールや方法がもう既に存在していることが多々あります。今どきのテクノロジーは思ってる以上のスピード感があります。
ちなみにですが、上記の悩みもすぐ解決できます。
- タイピングするのが面倒 → 大抵のエディタには補完機能がある
- タイピングミス → タイピングミスを警告する機能はエディタやアプリに備わっている
- エラー → エディタ、モジュール、プラグインなどで大体把握できる
ということで、常に面倒なことを探し、見つけたら「この面倒な作業を簡単にするツールはないだろうか?」と考えてみて下さい。そしてGoogleで検索すると案外、既にあります。
6.情報のキャッチアップは習慣にしよう
ブログやニュースサイト、本、Twitterなどを通じて情報のキャッチアップは常に行うようにするといいでしょう。僕はキャッチアップを行うことで得られる情報は、2種類あると思っています。
- 新しいツールやライブラリの情報
- 方法論、アイデア的なもの
「1」は少しアドバンスド向けな話で、勉強をはじめたばかりの方にとっては決して優先度の高いものではないかもしれません。ただ「2」に関しては、今勉強している内容によい効果をもたらす可能性があります。このブログ記事もそうですが、「こういう風に勉強するといい」「このツールをこうやって使うとめちゃくちゃ早くコードが書ける」などのハウツーは即効性があります。
どこのサイトの情報が有益なのか?は言語によっても違うので自分で調べなくてはいけませんが、オールマイティなところでいうと以下のサイトはオススメです。
またその他にも、イケてるIT企業のエンジニアさんらによるブログは良記事が多いです。例えば、面白法人カヤックさんは「KAYAC engineers’ blog」、クックパッドさんは「クックパッド開発者ブログ」などを持っていて、更新頻度も高いです。
7.よきメンターを見つける
最後に、これは決して誰でも得られる機会ではないかもしれませんが、可能であればメンターとなる人を見つけましょう。
理想は、ある程度以上コードが書けて面倒見がいい人ないし、そのような人がいる組織を見つけることです。やはり1人で行うよりも、その道に長けた人が身近にいると困った際に質問できますし、何よりお尻を叩いてくれる師匠がいるとモチベーションが下がりません。
冒頭でインターンシップの話をしたのはそういうことなんですよね。
……ちなみにですけど、LIGフィリピン支社でもインターンの募集をしておりますよ(^ω^)