読者です 読者をやめる 読者になる 読者になる

paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

「いつか勉強する」を実現できたことありますか?現役エンジニアに聞いた、忙しくても効率よく学べる勉強法10

f:id:paiza:20161130143208j:plain
Photo by UBC Learning Commons
f:id:paiza:20140916135428p:plainこんにちは。谷口です。

自分以外のエンジニアを見ていて、「どうしてこんなことまで知っているんだろう?」「何でここまでできちゃうんだろう?」と思うことはありませんか?

デキるエンジニアたちは、やはり裏でいろいろな勉強をしています。とはいえ、誰もが業務後や休みの日に何時間も難しい勉強をしている…というわけではありません

結論から言うと、彼らは情報収集やインプット等に関して、普段の生活の中で効率よく学べる仕組みを作っているため、無理のない勉強とスキルアップができているのです。

では、具体的にどんな勉強法を実施しているのか?

今回は、弊社でpaizaを作っているエンジニアたちに比較的簡単に習慣化しやすい学習方法を聞いてきましたので、ご紹介いたします。

「なかなか勉強のための時間が作れない」「どういうステップで勉強したらいいかわからない」という方の参考になればと思います。

【目次】

■聞いた人

佐藤

担当:paizaのバックエンドシステムの開発
最近勉強してること:JavaScript関連のこと。React.jsとか

中村

担当:paizaの中途向けフロントエンド、バックエンドシステムの開発
最近勉強したこと:JavaScriptのライブラリとか。最近は機械学習とか統計学とかにも手を出したい気持ち…

高村

担当:paiza新卒、POHなどイベント企画系の開発
最近勉強したこと:css、sass、Bootstrap、Vue.jsとかフロントエンド周辺のこと

■1.ゆるく情報収集し続けられる状況を作る

f:id:paiza:20161122123729j:plain
Photo by Gonzalo Baeza
何でも「勉強のため!」とか「毎日何分必ずこれをやる!」とか思っていると絶対に嫌になりますから、情報収集に関しては、ゆるく習慣づけしちゃうのがよいです。

インターネットやツイッターは普段から手癖でやっていたり、スマホ依存してる人も多いと思うので、最初はQiitaはてなstackoverflowPOSTDTeckFeed等の情報サイトで好きなものをチェックするとか、ツイッターで技術系のアカウントのフォローを増やすとかして、隙間時間にざーっと眺めたり、気になった記事だけでも開いてみて、よかったらブックマークやストックをしておく。

それだけでも情報に触れる機会は増えて、「なんか最近このフレームワークの記事がよく流れてくるな、人気出てきたのかな」といったことが何となくでもわかるようになります。

参考までに好きなサイト書いておきます。

好きなサイト
Qiita
はてなブックマークのテクノロジーカテゴリ
stackoverflow
POSTD
TeckFeed

好きなツイッターアカウント(敬称略)
Qiita
Amazon Web Services
Yukihiro Matsumoto
Dan Kogai

■2.何を学ぶ必要があるか明確にする

そもそもエンジニアの勉強って、「どんな技術があるのか?」「この技術では何ができるのか?」「自分が抱えている課題にはどの技術が役立ちそうか?」等を知って、初めて「自分はいま何を勉強すべきか?」が明確にできるんだと思います。

ですので、具体的な実践に入る前の情報収集は重要です。

例えば、「JavaScriptのライブラリを導入したいから勉強しよう」と思っても、数はたくさんあるし、目的によって最適なものも異なりますから、片っ端から触ってみるのは大変です。

まずは「どういうライブラリがあるのか?」「それぞれどんな特徴があるのか?」「自分の目的に合っていそうなのはどれか?」「使った人の感想はどんな感じか?」といった感じで普段から情報収集をしておいて、「自分にはこれとこれとこれがよさそうかな?」「もうこれ以上は実際に使ってみないとわかんないな!」といったところまで来たら、実際にチュートリアルなどで実践をしてみる……というのがいいと思います。

「次の転職先ではRailsを使っているから勉強しておかねば!」みたいな感じで、既に目的と学ぶべきものが確定している場合はよいのですが、それ以外の場合は情報収集を通して「何を学ぶ必要があるか?」を明確にしていった方がいいです。じゃないと、「この技術の勉強を一生懸命やっていたのに、実はあの技術の方が適していると後から知った……」ということにもなりかねないので。

■インプットと実践をする

f:id:paiza:20161130143328j:plain
Photo by Kara
情報収集は普段からできているけど、実践的な勉強はつい後回しになっている人は多いかと思います。

大体そういう人は「時間ができたらやる」と言いますが、時間ができることなんか一生ありません。これも情報収集のように「勉強するしかない」時間を生活の中に組み込んでいく必要があります。

◆3.社内勉強会を定期開催する。

paiza運営元のギノでは、有志のエンジニアで業務時間内で開発関連と英語のもくもく勉強会を週一回ずつ実施しています。

これは私が最初に始めたのですが、今は毎週のスケジュールの中に組み込まれています。

最初は、直近の業務に関する調査や勉強だけをしていると狭く深くになってしまいがちなので、もっと知識を横に広げておくために勉強したいと感じていたのと、あと自分一人でやろうとしても業務が忙しいと結局なあなあになってしまいそうだと思い、周りのエンジニアにも声を掛けて始めました。

一人でやろうとすると、正直言ってモチベーションの波に左右されたり、時間がないとか言い訳して中断しまう日も多いと思います。そんな場合は周りの人も巻き込んで、もう勉強するしかない時間を機械的に組み込んでしまった方がよいのです。いつかやろうと思ってても一生やらないですし

と言ってもうちでやってるのはもくもく会なので、↓こんな感じでオフィスの片隅の会議スペースに集まって、一定時間自由に勉強したり、感想や情報を共有したりしているだけです。最近はフロントエンドのフレームワークチュートリアルをやってみて、感想を言ったりすることが多いです。この時はメンバーの好意でブルボン菓子が提供されました。ブルボン菓子最高。

会社の環境にもよるかと思いますが、可能そうなら週一回一時間ぐらい、どこかで試しにやってみることをおすすめします。

◆4.社外の勉強会に行く

社内で勉強会を実施できない人は、社外の勉強会に行くのもよいと思います。

もくもく会でもきっちり講義形式の勉強会でもいいのですが、これもやっぱり、気分の波に左右されやすい自分を一定時間勉強するしかない環境に放り込むのが目的です。

私は最近、講義+実践形式の機械学習の勉強会によく参加しています。(個人的にですが、手を動かさず話を聞くだけの勉強会は、勉強した気になって自己満になりがちなので、ほどほどに……と思っています)

社外の勉強会は、周りの人と話して、「最近こんな本を読みました」とか「これ使ってみたけどよかったですよ」とか、情報交換できることもモチベーションになっています。

◆5.公式のドキュメントを読んでチュートリアルをやってみる

最近の、特に新しめのオープンソース系の技術というのは「いろんな人に使ってもらって広まってほしい」といった目的があるからか、公式のドキュメントやチュートリアルがかなり充実しているものが多いです。そういったコミュニティが活発になってくると、ドキュメントの日本語訳とかも充実してきますし。

全くのプログラミング未経験者にはちょっとハードルが高いかもしれませんが、既に何らかの開発経験がある人が「このフレームワーク人気だなあ、試してみたいなー」みたいな場合は、公式でドキュメントを読みながら、手を動かしてチュートリアルをやってみるのが一番手っ取り早いし勉強になると思います。

◆6.本を読む

f:id:paiza:20161130143434j:plain
Photo by Brittany Stevens

  • 「内定先ではこの言語を使っているから基礎を学んでおきたい!」等、学ぶべき技術が明確で
  • 既に定番化してるものを体系的に追いたい

という場合は、断片的な情報収集をするよりも、書籍を一冊通して体系的に勉強する方が効率よく正確な知識を得られます。

◇本の選び方

ブクログというWeb本棚サービスは、レビューがAmazonより信頼できると思うので、参考にしています。自分は、ブクログで技術書を探す→そのままAmazonに飛んで、kindle版を買ってiPadで読むのが定番になっています。

有名エンジニアの方が本棚を公開してくれたりしていますから、それも参考になります。

「ネットはするけど本を読む習慣がない」とか「技術書が重い」という人は、絶対にkindleがおすすめなので、ネットする感覚で隙間時間に読みましょう。

ブクログ - web本棚サービス


自分はお金がない新人の頃に、図書館でよく技術書を借りてました。区によって蔵書が異なるので、貸し出しカード5枚ぐらい持ってたと思います。カーリルという検索サービスを使うと、全国の図書館から蔵書検索ができて大変に便利です。

最新の技術書が何でもすぐに入ってくる…というわけではないですが、古典の良書(リーダブルコードなど)とかは意外と揃っているので、「中身をちゃんと見ないと自分に合うかわからないし…」「予算がない…」という人は借りて読むのもいいと思います。

カーリル | 日本最大の図書館蔵書検索サイト

◇技術書の読み方

まず目次でもいいのでざっと目を通して、何となく全体を把握してから、興味のあるところ・役立ちそうなところから読んでみるのがよいと思います。

技術書は物語ではないですから、全体のボリューム感や「何がどこまで書いてあって、どんな知識を得られる本なのか」を知ってから、「じゃあここが必要そうだな」という感じで読み始めれば大丈夫です。

新しい言語を勉強するために初心者向けの本を買ったけど、他の言語でプログラミングした経験はあるから、最初の基礎的な解説は読まなくてよかったな…というパターン等は地味に多いですよね。

◆7.オープンソースのコードや、Githubで人の書いたコードを見る

f:id:paiza:20161130143803j:plain
Photo by John Loo
よいオープンソースのコードというのは、Webデザインで言うところのデザインパターンみたいなベストプラクティスが見られるんです、無料で!ある程度コードが読める人、実践でWebサービスを作っている人は、かなり参考になると思います。

個人的にはGitLabのコードとかおすすめです。

GitHub - gitlabhq/gitlabhq: GitLab CE | Please open new issues in our issue tracker on GitLab.com

◆8.メンターを作って、真似したり追いかけたりする

身近な先輩でも遠くのスターエンジニアでも誰でもいいので、憧れの人や「この人の記事好きだな~」と思える人がいれば、その人の発信する情報を追いかけたり、真似をしてみたりするのが勉強になりますし、「あ~自分もやらねば~」という気持ちになって、モチベーションも上がります。

自分も前職の先輩ですごく尊敬している人がいまして、ブログをチェックしまくったり、その人が登壇する勉強会に行ったりしています。

好きな人がいたら積極的に追いかけたり、真似してみたりするといいんじゃないでしょうか。これもやっぱり一人でやるよりはモチベーションが上がります。

■学んだことをアウトプットして、整理する

◆9.ブログを書く

以前は書籍などを読んでインプットするだけの勉強をしていたのですが、いざ実務となると学んだはずの知識が出てこない場合も多く、「インプットだけでは知識が全然定着しない…どうにかしなければ…」と思って、ブログでアウトプットをすることを始めました。

やはり不特定多数の人へ向けて説明できる文を書こうとすると、自分が曖昧なままにしていた部分が明らかになり、それを潰すためにまた調べる…という行為が必要になって、ただインプットをしていた時期よりも、知識が定着しました。実際に仕事で類似したパターンに出くわしたときも「あっ!これ進研ゼミブログでやったところだ!」といった感じで記憶のフックにもなって、スムーズに対応できるようになりました。

view数とか、今はQiitaで書いているのでストック数とかコメントとかもモチベーションになります。

「アウトプットする時間まで作れない…」という人も多いかもしれませんが、私は仕事が終わって帰りがけにちょっとカフェに寄って書いたりとかしています。頭が休息モードになっちゃってから改めて書こうとしても、切り替えるのが大変だと思いますので、仕事モードなうちに書いちゃった方がよいです。

◆10.業務で使えるものを作ったり、簡単めな仕事を請けてしまう

私は前職ではJavaを使った開発をしていたのですが、Rubyの勉強をしていたときに、会社の端末管理に使えるようなアプリをRubyで作りました。新しく学んだ技術を使って、実際に自分の仕事や生活の中で使えそうなシステムを作ってみる(できれば最後まで作り切ってみる)のがよいです。

あとは過去にココナラというサイトでちょっとした実践的な依頼を受けたりしていて、ちょっと知らなかったことを調べるきっかけになったりしてすごくためになりました。

■まとめ

以上、弊社エンジニアに聞いた勉強法を紹介してきました。

特に、情報収集の習慣や勉強会など、無理のない範囲で勉強になる習慣をつけること、そして自分一人だけで全て学ぼうと思うとそのときのモチベーションに左右されてしまいがちなので、いろいろな形で他人を巻き込める仕組みを作ることが重要かと思います。

paizaで実施しておりますpaizaオンラインハッカソンは、ストーリーやゲーム内に登場するプログラミング問題を解いていくWeb上のハッカソンです。

実践的なプログラミング問題を解いてその場で採点できるだけでなく、回答コードは自由に公開でき、毎回多くの方がブログ等にご自分のコードを公開していただいておりますので、問題を解く練習や人のコードを見る勉強にもなるオンラインイベントになっております。

詳しくはこちら
paiza.hatenablog.com


また、paizaではS,A,B,C,Dのスキルレベルに合わせて挑戦できるプログラミングスキルチェック問題や、初心者でも動画で学べるプログラミング学習&就活講座「paizaラーニング初心者でも遊べるプログラミング学習ゲーム「コードガールこれくしょんも公開しております。

「独学でプログラミングを学びたい」「一人でやっているとなかなかモチベーションが保てない…」という方もぜひ挑戦してみてください!

paiza.jp




paizaではITエンジニアとしてのスキルレベル測定や、プログラミング問題による動画学習コンテンツ(paiza Learning)を提供しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編