ボクココ

個人開発に関するテックブログ

技術を身につけるのに適しているのは本か、実践か。

ども、@kimihomです。

皆さんは新しい技術が出てきた時に、どうやってそれを学ぶだろうか?

大きく分けて2つあるあだろう。まず一つは「体系的に学んでから始める方法」、そしてもう一つは「いきなり使って作り始めてみる」だ。今回はこのことについて思うことを書いてみる。

その技術をなぜ学ぶのか、しっかり検討しよう

まずその前に、なぜそれを学ぶ必要があるのか、について。エンジニアは技術を学び続ける必要があるとはよく言われるが、それでも技術なんてとてもじゃないけど全部マスターするのは不可能だ。そんな中で自分が何を学ぶべきか、取捨選択する必要がある。

今後の自分のキャリアを見越して選択するのか、目の前の仕事で使ってるから学ぶのか、それとも自分の実現したい未来のために選択するのか。それらを加味した上で検証しないといけない。 "廃れていたのを頑張って勉強しちゃって損した" とは実際そういう経験をするとそう思うんだけども、でもどんな技術でも得られるものはあるだろうし、次の学習をよりスムーズにさせてくれるという意味では無駄ではないだろう。だから自分の信じた道を進めばいいのだと思う。

私の場合は Ruby 中心としたテクノロジーを学び、それで自分の実現したいことを早くシンプルに解決できるかを最も大切にしている。今 Python エンジニアの給料が高いからといって Pythonを勉強することはないだろう。 TensorFlow とかちょっと興味あるけど、自分が踏み入る領域ではないな、と感じている。IoT 関連も同様の理由で私は学んでいない。

そうした軸を決めないと、どれもこれも中途半端に手を出してまともに何も作れないような(フルスタック)エンジニアになってしまうだろう。取捨選択も時には必要だと私は考えている。まぁ世の中にはバケモンみたいな人がいて本当に何でもできちゃう人もいるんだけどね・・。

体系的に学んでから使うメリット

私は体系的に学んでから技術を使うことにしている。最終的にそっちの方が誤った方向に行きにくいし、開発中のストレスが減るためだ。特に何も知らずにいきなり作り始めると、わからないことだらけで結局ドキュメントを読んで理解しなければならない。いちいち行ったり来たりするのが個人的にあまり好きではないので、まずはざっと理解してから始めるようにしている。

体系的に学べば、その技術で何ができるのか、得意なのかも把握できるだろう。本を読んでみて自分に合わないとか望んでいる機能が実現できそうにないとかを早めに察知することできる。

特に初心者であれば書籍が大量に出回っているので、それらを読むのが手っ取り早いだろう。最新技術を学ぶようになってきたら、英語の公式HPにある最新ドキュメントを読むのが最も効率的だ。

学ぶには時間がかかるし、しんどい時間だ。でもそれを終えたところで、ようやく使えるレベルになり、技術力が上がったと言えるのではないだろうか。

いきなり作り始めるメリット

最初のチュートリアル程度を読んだらまずは使ってみる作戦も割と一般的だ。これはうまくいけば楽しく、そして必要なところだけを調べながら開発すればいいので、効率が良くなる場合もある。

このタイプも割と多いし、そうした人の方が技術力が高かったりするので、人それぞれだと思う。どんだけたくさん詰まってもストレスためずに調べられる人ならこの方法のほうがいいと思う。熟練になってくると、だいたいこんなんだろうなってわかってきて、問題解決のスピードもあがるだろうから、より上級者がやる方法なのかもしれない。

Elasticsearch の場合

今、私は Elasticsearch を勉強している。全文検索を導入したいし、Elasticsearch でデータの分析をいろいろできるようになりたいからだ。この場合、日本語の書籍はまず古いバージョンなため読んでも動かないこともある。そんで日本語の記事とか読んでも記事止まりで体系的に学べることが少ない。

Elasticsearch 使いはきっといきなり使い始める系の方には馴染みやすいテクノロジーだったのかもしれないが、体系的に学びたい私にはどうしてもハードルが高かった。そんな中、最近は Elasticsearch 公式ドキュメントを読むことで、体系的に学ぶことができている。

一つずつ使える技術を増やしていってユーザーにとってサービスのコアとなるくらい有用な機能を提供できるのであれば、導入したいと思う。学んだからといって強引に新技術を導入するのは、前回の記事みたいにダメなことだからね。ここをしっかりと認識して学んでいきたい。

www.bokukoko.info