Photo by UBC Learning Commons
こんにちは。谷口です。
自分以外のエンジニアを見ていて、「どうしてこんなことまで知っているんだろう?」「何でここまでできちゃうんだろう?」と思うことはありませんか?
デキるエンジニアたちは、やはり裏でいろいろな勉強をしています。とはいえ、誰もが業務後や休みの日に何時間も難しい勉強をしている…というわけではありません。
結論から言うと、彼らは情報収集やインプットなどに関して、普段の生活の中で効率よく学べる仕組みを作っているため、無理のない勉強とスキルアップができているのです。
では、具体的にどんな勉強法を実施しているのか?
今回は、弊社でpaizaを作っているエンジニアたち(記事公開当時)に比較的簡単に習慣化しやすい学習方法を聞いてきましたので、ご紹介いたします。
「なかなか勉強のための時間が作れない」「どういうステップで勉強したらいいかわからない」という方の参考になればと思います。
【目次】
■聞いた人
※記事公開当時の情報です。
佐藤
担当:paizaのバックエンドシステムの開発
最近勉強してること:JavaScript関連のこと。React.jsとか
中村
担当:paizaの中途向けフロントエンド、バックエンドシステムの開発
最近勉強したこと:JavaScriptのライブラリとか。最近は機械学習とか統計学とかにも手を出したい気持ち…
高村
担当:paiza新卒、POHなどイベント企画系の開発
最近勉強したこと:css、sass、Bootstrap、Vue.jsとかフロントエンド周辺のこと
■1.ゆるく情報収集し続けられる状況を作る
Photo by Gonzalo Baeza
何でも「勉強のため!」とか「毎日何分必ずこれをやる!」とか思っていると絶対に嫌になりますから、情報収集に関しては、ゆるく習慣づけしちゃうのがよいです。
インターネットやTwitterは普段から手癖でやっていたり、スマホ依存してる人も多いと思うので、最初はQiita・はてな・stackoverflow・POSTD・TeckFeed等の情報サイトで好きなものをチェックするとか、Twitterで技術系のアカウントのフォローを増やすとかして、隙間時間にざーっと眺めたり、気になった記事だけでも開いてみて、よかったらブックマークやストックをしておく。
それだけでも情報に触れる機会は増えて、「なんか最近このフレームワークの記事がよく流れてくるな、人気出てきたのかな」といったことが何となくでもわかるようになります。
参考までに好きなサイト書いておきます。
好きなサイト
Qiita
はてなブックマークのテクノロジーカテゴリ
stackoverflow
POSTD
TeckFeed
好きなツイッターアカウント(敬称略)
Qiita
Amazon Web Services
Yukihiro Matsumoto
Dan Kogai
■2.何を学ぶ必要があるか明確にする
そもそもエンジニアの勉強って、「どんな技術があるのか?」「この技術では何ができるのか?」「自分が抱えている課題にはどの技術が役立ちそうか?」などを知って、初めて「自分はいま何を勉強すべきか?」が明確にできるんだと思います。
ですので、具体的な実践に入る前の情報収集は重要です。
例えば、「JavaScriptのライブラリを導入したいから勉強しよう」と思っても、数はたくさんあるし、目的によって最適なものも異なりますから、片っ端から触ってみるのは大変です。
まずは「どういうライブラリがあるのか?」「それぞれどんな特徴があるのか?」「自分の目的に合っていそうなのはどれか?」「使った人の感想はどんな感じか?」といった感じで普段から情報収集をしておいて、「自分にはこれとこれとこれがよさそうかな?」「もうこれ以上は実際に使ってみないとわかんないな!」といったところまで来たら、実際にチュートリアルなどで実践をしてみる……というのがいいと思います。
「次の転職先ではRailsを使っているから勉強しておかねば!」みたいな感じで、既に目的と学ぶべきものが確定している場合はよいのですが、それ以外の場合は情報収集を通して「何を学ぶ必要があるか?」を明確にしていった方がいいです。じゃないと、「この技術の勉強を一生懸命やっていたのに、実はあの技術のほうが適していると後から知った……」ということにもなりかねないので。
■インプットと実践をする
Photo by Kara
情報収集は普段からできているけど、実践的な勉強はつい後回しになっている人は多いかと思います。
大体そういう人は「時間ができたらやる」と言いますが、意識をしなければ時間ができることなんか一生ありません。これも情報収集のように「勉強するしかない」時間を生活の中に組み込んでいく必要があります。
◆3.社内勉強会を定期開催する
paiza運営元のギノでは、有志のエンジニアで業務時間内で開発関連と英語のもくもく勉強会を週一回ずつ実施しています。
これは私が最初に始めたのですが、今は毎週のスケジュールの中に組み込まれています。
最初は、直近の業務に関する調査や勉強だけをしていると狭く深くになってしまいがちなので、もっと知識を横に広げておくために勉強したいと感じていたのと、あと自分一人でやろうとしても業務が忙しいと結局なあなあになってしまいそうだと思い、周りのエンジニアにも声を掛けて始めました。
一人でやろうとすると、正直言ってモチベーションの波に左右されたり、時間がないとか言い訳して中断しまう日も多いと思います。そんな場合は周りの人も巻き込んで、もう勉強するしかない時間を機械的に組み込んでしまった方がよいのです。いつかやろうと思ってても一生やらないですし。
と言ってもうちでやってるのはもくもく会なので、↓こんな感じでオフィスの片隅の会議スペースに集まって、一定時間自由に勉強したり、感想や情報を共有したりしているだけです。最近はフロントエンドのフレームワークのチュートリアルをやってみて、感想を言ったりすることが多いです。この時はメンバーの好意でブルボン菓子が提供されました。ブルボン菓子最高。
会社の環境にもよるかと思いますが、可能そうなら週1回1時間ぐらい、どこかで試しにやってみることをおすすめします。
◆4.社外の勉強会に行く
社内で勉強会を実施できない人は、社外の勉強会に行くのもよいと思います。
もくもく会でもきっちり講義形式の勉強会でもいいのですが、これもやっぱり、気分の波に左右されやすい自分を一定時間勉強するしかない環境に放り込むのが目的です。
私は最近、講義+実践形式の機械学習の勉強会によく参加しています。(個人的にですが、手を動かさず話を聞くだけの勉強会は、勉強した気になって自己満になりがちなので、ほどほどに……と思っています)
社外の勉強会は、周りの人と話して、「最近こんな本を読みました」とか「これ使ってみたけどよかったですよ」とか、情報交換できることもモチベーションになっています。
◆5.公式のドキュメントを読んでチュートリアルをやってみる
最近の、特に新しめのオープンソース系の技術というのは「いろんな人に使ってもらって広まってほしい」といった目的があるからか、公式のドキュメントやチュートリアルがかなり充実しているものが多いです。そういったコミュニティが活発になってくると、ドキュメントの日本語訳とかも充実してきますし。
全くのプログラミング未経験者にはちょっとハードルが高いかもしれませんが、既に何らかの開発経験がある人が「このフレームワーク人気だなあ、試してみたいなー」みたいな場合は、公式でドキュメントを読みながら、手を動かしてチュートリアルをやってみるのが一番手っ取り早いし勉強になると思います。
◆6.本を読む
Photo by Brittany Stevens
- 「内定先ではこの言語を使っているから基礎を学んでおきたい!」など、学ぶべき技術が明確になっている
- 既に定番化してるものを体系的に追いたい
という場合は、断片的な情報収集をするよりも、書籍を一冊通して体系的に勉強するほうが効率よく正確な知識を得られます。
◇本の選び方
ブクログというWeb本棚サービスは、レビューがAmazonより信頼できると思うので、参考にしています。自分は、ブクログで技術書を探す→そのままAmazonに飛んで、kindle版を買ってiPadで読むのが定番になっています。
有名エンジニアの方が本棚を公開してくれたりしていますから、それも参考になります。
「ネットはするけど本を読む習慣がない」とか「技術書が重い」という人は、絶対にkindleがおすすめなので、ネットする感覚で隙間時間に読みましょう。
自分はお金がない新人の頃に、図書館でよく技術書を借りてました。区によって蔵書が異なるので、貸し出しカードを5枚ぐらい持っていたと思います。カーリルという検索サービスを使うと、全国の図書館から蔵書検索ができて大変に便利です。
最新の技術書が何でもすぐに入ってくる…というわけではないですが、古典の良書(リーダブルコードなど)とかは意外とそろっているので、「中身をちゃんと見ないと自分に合うかわからないし…」「予算がない…」という人は借りて読むのもいいと思います。
■学んだことをアウトプットして、整理する
◆9.ブログを書く
以前は書籍などを読んでインプットするだけの勉強をしていたのですが、いざ実務となると学んだはずの知識が出てこない場合も多く、「インプットだけでは知識が全然定着しない…どうにかしなければ…」と思って、ブログでアウトプットをすることを始めました。
やはり不特定多数の人へ向けて説明できる文を書こうとすると、自分があいまいなままにしていた部分が明らかになり、それをつぶすためにまた調べる…という行為が必要になって、ただインプットをしていた時期よりも、知識が定着しました。実際に仕事で類似したパターンに出くわしたときも「あっ!これ進研ゼミブログでやったところだ!」といった感じで記憶のフックにもなって、スムーズに対応できるようになりました。
view数とか、今はQiitaで書いているのでストック数とかコメントとかもモチベーションになります。
「アウトプットする時間まで作れない…」という人も多いかもしれませんが、私は仕事が終わって帰りがけにちょっとカフェに寄って書いたりとかしています。頭が休息モードになっちゃってから改めて書こうとしても、切り替えるのが大変だと思いますので、仕事モードなうちに書いちゃった方がよいです。
◆10.業務で使えるものを作ったり、簡単めな仕事を請けてしまう
私は前職ではJavaを使った開発をしていたのですが、Rubyの勉強をしていたときに、会社の端末管理に使えるようなアプリをRubyで作りました。新しく学んだ技術を使って、実際に自分の仕事や生活の中で使えそうなシステムを作ってみる(できれば最後まで作り切ってみる)のがよいです。
あとは過去にココナラというサイトでちょっとした実践的な依頼を受けたりしていて、ちょっと知らなかったことを調べるきっかけになったりしてすごくためになりました。
■まとめ
以上、弊社エンジニアに聞いた勉強法を紹介してきました。
特に、情報収集の習慣や勉強会など、無理のない範囲で勉強になる習慣をつけること、そして自分一人だけで全て学ぼうと思うとそのときのモチベーションに左右されてしまいがちなので、いろいろな形で他人を巻き込める仕組みを作ることが重要かと思います。
paizaで実施しておりますpaizaオンラインハッカソンは、ストーリーやゲーム内に登場するプログラミング問題を解いていくWeb上のハッカソンです。
実践的なプログラミング問題を解いてその場で採点できるだけでなく、回答コードは自由に公開でき、毎回多くの方がブログやSNSなどにご自分のコードを公開していただいておりますので、問題を解く練習や人のコードを見る勉強にもなるオンラインイベントになっております。
また、paizaではS,A,B,C,Dのスキルレベルに合わせて挑戦できるプログラミングスキルチェック問題や、初心者でも動画で学べるプログラミング学習&就活講座「paizaラーニング」、初心者でも遊べるプログラミング学習ゲーム「コードガールこれくしょん」も公開しております。
「独学でプログラミングを学びたい」「一人でやっているとなかなかモチベーションが保てない…」という方もぜひ挑戦してみてください!
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。