こんにちは。今年の3月にクラウドソーシングのクラウドワークスに入社したエンジニアの廣瀬です。好きなお酒はビールとウイスキーです。
入社から約2ヶ月半、エンジニアとしてやっていくためには日々の勉強が欠かせないなーと感じる毎日です。今日は自分が技術を身に付けたりしていく上で意識していることを紹介したいと思います。
あくまで僕の場合ですが、何かの参考になれば幸いです。
情報収集 = インデックスを作る
次から次へと現れる(そして消えていく)新しい技術や用語。知らない言葉が出てくるとどうしてもすぐにキャッチアップしたくなるものですが、情報収集ばかりに時間が取られてしまうのは本末転倒です。そこで僕はなんとなく以下の様なルールを設けています。
- 知らない言葉をニュースフィード等で5回くらい目にしたらちょっと調べる。(それまではよっぽど気にならないかぎり調べない)
- 5回見たら、自分とは関係なさそうであっても、一応調べる。
- 調べる目安はだいたい「3行で説明できる」くらいまで。(使えるようになる必要はない)
- 調べる観点は主に「何に使えるか・使えそうか?」、「使えるようになるためには何が必要か?」、「盛り上がりそうか?」。
このとき意識しているのは、自分の中に「インデックス(目次)を作っておく」ということです。必要となったときにできるだけ多くの選択肢が思い浮かぶよう、取っ掛かりをたくさん作っておくイメージです。
逆に言うと、必要になったときに思い浮かびさえすれば良くて、使えるようになるのはそのときでよいと割り切っています。質より量を重視しながらも、「聞いたことある」だけにはならないよう、このようなルールにしています。
やったことのないことをやる機会を作る
上記のようなことを続けていると、「〇〇では××ができるらしい。知らんけど」みたいな知識が増えていきます。
しかしながら、技術や手法というものは、実際に手を動かして使ってみなければ分からないことが多いのも事実です。それでも、片っ端から試してみることは難しいですし、そもそも「手元で動かしてみた」程度では得るものも少ないです。
業務で使うものであれば自然と触れる機会を得られますが、どうしても一定の内容に固定されがちです。とくに新しいものに触れることは職場では難しいことも多いかと思います。
そこで僕は、日々の情報収集の中で気になるものがあれば、それらを使う機会を積極的に自分で作るようにしています。たとえば以下のような方法があります。
- できるだけ使ったことのない技術や手法を用いて、個人でサービスやアプリを作ってみる。
- 業務の中で自分が使ったことない技術が導入できそうなところを探してみる。
- いっそ転職 or 起業する。
その他にも、社内サービスのような取り組みはまさにうってつけです。また、クラウドワークスではエンジニア部活動という制度もあり、僕も参加しています。
技術はあくまで何かしらの目的を達成するための手段だと考えていますが、目的を達成するためには技術の向上が必要で、技術を向上させるためにはやはりできるだけ実践的な機会や環境が必要だと思います。つまり、目的の達成と自分の成長を最大限両立できる状況を(両立が難しくとも公約数が最大となる状況を)、自ら作るよう心がけています。
習得する = その技術のインデックスを作る
業務上、または自ら設けた機会によって、何かを習得する場面になったとき、ものによりますが、おおよそ以下の手順を踏むようにしています。ここでも僕は、「インデックスを作る」ということを意識して学習を進めていきます。
- 書籍を一冊選ぶ。できるだけ「○日間でできる〜」といった入門書ではなく、多少ハードルが高くても、できるだけ仕様を網羅したような本(オライリーなど)。
- その本を最初から最後まで読む*1。すべてを理解したり覚えようとするのではなく、なんとなくの全体像と、「こんな機能がある、こういうときはこんな感じ」くらいを把握できればよい。
- 本を読み切ったら、GitHub などで、実際にそれが使われているコードを軽く読んでみる。暗黙の約束事に気づいたり、書き方や使い方のイメージが湧きやすくなる。
このあと、初めて自分で使ってみます。当たり前ですが、人の書いたものを読んだだけで使えるようになるわけではないので、この時点では分からないことばかりです。それでも、何を調べたらよいか、どのように調べたらよいかはなんとなく頭のなかにできあがっているので、僕はこの方法が結局一番効率が良いと思っています。
情報収集の場合にも同じことが言えますが、暗記が必要な試験勉強ではないので、まずはいかに調べられるようにしておくか、具体的に言ってしまえば検索や質問をするときのキーワードを蓄積しておくことが自分の力に繋がるのではないかと考えています。他の書籍や情報をあたったり、勉強会に参加するなどして知識を深めていくときにもそれらが役立ちます。
勿論、できるだけ多くを覚えてしまう方が良いのですが、それはまあ、使ってれば自然と覚えてしまうものではないでしょうか。(だからこそ使う機会を作ることが大事だと考えています)
まとめ
情報収集や勉強については色々な考え方があると思いますが、いずれにしても何かしらの意識を持って取り組んだ方が良いということは変わらないと思います。黙ってても情報がどんどん入ってくるいまの時代では尚更そうだと思います。
また、僕の場合は今までがそうだったこともあって独学を前提とした考え方になっていますが、周りに教えてくれる方がいる場合でも、言葉は悪いですが「その人をどう使うか」と考えるくらいの主体性を持って取り組むと効果的なのではないでしょうか。
クラウドワークスでは一緒に成長していきたいエンジニアを募集しています!
*1:僕は技術書の謝辞を読むのが好きです。