エンジニアのワタシ流、社会人の勉強法あれこれ
1.自己紹介
こんにちは、ルート・シーのエンジニアの太田黒です。
普段はフロントエンドを中心に、ローカル環境の整備やCMSの構築なども行うエンジニアとして仕事をしています。
私がweb制作に携わり始めたのは8年前。
大学の専攻は情報工学だったので独学エンジニア!!かと言われるとちょっと違うのですが、PHPもJavaScriptもweb制作を目指し始めてから勉強したのでその点においては独学と言えます。
今回はそんな私の勉強法の一部をご紹介させていただきます。
2.知識とはネットワークである
知識とは、ネットワークである。
これは、勉強の種類を問わず共通する大前提となります。
ある知識について。
初めて聞いた時には何を言っているのかチンプンカンプンでも、隣接する領域の知識を身につけた瞬間に解像度が飛躍的に上がることはままあるものです。
同様に難解な知識を理解するには、その土台となる知識をあらかじめ理解しておく必要もあります。
単語帳を作る
特に理解の浅いジャンルの勉強において知識を幅広く身につけるために、私は単語帳を作ることをおすすめしています。
手書きのノートでも良いですが、個人的には気軽に更新できるメモアプリやスプレッドシートなどがおすすめです。
ある知識を理解するには、その知識に関連した一定数の単語の理解が必要です。
そして、その単語の理解にはさらなる基礎知識の理解が必要であり、この繋がりが最終的に知識のネットワークを構築します。
その上で単語帳を作る際は一般的にこの単語はこういう意味で使われているという点を引用付きでまとめることをおすすめします。
ユビキタス言語という単語をご存知でしょうか。
これはシステム開発において、プロジェクト関係者全員で作り上げ共有する言語のことです。
端的にいうと、プロジェクト内共通の単語帳になります。
こういう言い回しのときはこの単語を使いましょう!というルールですね。
ユビキタス言語に限らず、ある単語を他者とのコミュニケーションの中で使うには共通認識が必要です。
そういった意味でも「なんとなくこういう意味だろうか」をニュアンスで理解するのではなく、その単語のもつ一般的な意味合いを正しく理解しておくことが必要となります。
これを繰り返すことで、初めて聞いたときはなんとなくしか理解できなかった事象が、知識の相互ネットワークができることでより深く理解できるようになります。
ある程度「この知識について理解できた」と感じた時に、改めて単語帳を見直し・書き直ししてみると新たな発見があるかもしれません。
3.ズボラ人間流読書術
上記のように知識をネットワーク化する・知っている単語を増やしていくためには、やはり読書が手っ取り早い方法かと思います。
私自身はそこまで本を読むことが得意ではありません。
元々勉強熱心な人間でもなければ記憶力もないので、読書をする際はなるべくズボラに以下のことを意識して読んでいます。
- 覚えない
- 時間をかけない
- 同じジャンルの本を複数冊読む
覚えない
「覚えない」ということは、実は一番大事なポイントではないかと個人的に思っています。
もちろん試験勉強などではしっかり暗記しないといけません。
しかし、必要なタイミングで必要な知識にアクセスできる環境にいるのであれば、覚える必要はありません。
(もちろん、覚える余力があるならば覚えた方が良いとは思います)
私は、大事だと思うページの大事だと思う行に合わせて付箋を貼りながら本を読んでいます。
そしてこの情報が必要なときはこの本を見るという事実だけ覚えておきます。
本の細かい内容は覚えません。
必要な時に本を取り出して、必要な箇所を熟読します。
こうすることで、本をHDDのような外部ストレージとして利用することができるようになります。
時間をかけない
時間をかけないのもポイントです。
分厚い本を買った時、頭からお尻まで読もうと思うとかなり時間がいります。
本を購入後すぐ読むことが出来ない場合、本棚にしまう前にまずは目次と見出しだけ目を通しておきます。
そうすると「この本のこの章が気になるから、この部分だけでもあとで読もう」という気分になります。
そのまま読むのを忘れてしまっても、この情報が必要なときはこの本を見るという情報が頭の中にインストールされるので必要な時に本を取り出せるようになります。
同じジャンルの本を複数冊読む
通常分厚い専門書を何冊も並行読書するのは疲れます。
しかし、上記のて覚えない・時間をかけないことを意識することで、複数冊の並行読書も可能になります。
同じジャンルの本の並行読書には、そのジャンルの重要ワードが見えてくるという大きなメリットがあります。
また、ある本では内容が分かりづらくとも、別の本だとあっさり理解できることもあります。
逆もまた然りです。
この時に、上述の単語帳メソッドを併用すると理解が飛躍的に速くなるのでおすすめです。
4.知識とはインプットのみならず
単語帳と読書でインプットをしたら、次に必要なのはアウトプットです。
知識はアウトプットまですることで初めて本当に使えるものとなります。
前述の通り、私の大学時代の専攻は情報工学でした。
もちろん、大学時代に学んだ情報工学の基礎は今でも役に立っているのですが、仕事で使えるレベルのプログラミングができるようになったのはこの仕事を志すようになってからでした。
突然ですが、MastodonというSNSをご存知でしょうか?
分散型のSNSなのですが、フリーのソフトウェアであり自身で所有するサーバーに個別インストール可能であるのが特徴です。
20代後半、フリーターだった私はサーバーとはなんぞやいうレベルからこのMastodon構築に挑みました。
サーバーのレンタルから始まり、データベース管理ソフトウェアのインストール。 そして、「そもそもRubyやLakeってなんやねん」というところから実際にSNSとして公開して機能するところまで構築できました。
ファイアウォールの設定を間違えて、サーバーにアクセスできなくなって焦るなどの経験もしました。
自身で借りたサーバーだからこそできた経験がたくさんありました。
文章だけを読んでいても、それが一体なんぞやと説明できるまでは、わからないことも少なくありません。
実際に手を動かすことで全体像が見えてくる、本に書かれている事象が理解できることも多いです。
その点でも、インプットした後には必ずアウトプットをして自身に定着させる、ということが非常に大事になってきます。
5.エンジニアに古文は必要か
話は変わりますが、「古文・漢文不要論争」というものをご存知でしょうか?
その名の通り、「古文・漢文を学校で教える必要はあるか」という論争であり、受験シーズンになると定期的に騒がれる話題です。
学生時代古文の授業について、私自身は正直真面目に授業を受けていなかったと自覚しています。
ですが、不要かと言われるとハッキリ「No」と言います。
古文や漢文に限らず、三角関数もそうですが。
「学校で習っても日常で使わない」と言われている知識のほとんどについて、基本的に使わないのではなく、使えるレベルに習熟できていないだけが真だと私は思っています。
もちろんすべての人がすべての事柄において習熟している必要はありません。
ですが、人それぞれの知識は小中高で習う教養の上に成り立っています。
そして、その知識が自身にとって本当に必要な知識であるかどうかはいざ習ってみたその時にはわからない、場合によっては10年後に急に必要になることもあるものです。
また同時に、すべての教養が仕事および日常生活に役に立つべきとも思いません。
居酒屋での何気ない会話が楽しかったり、春は揚げ物で笑えたり、大河ドラマと史実の違いに興味を持ったり。
教養は、そうした日常に小さな楽しみを見つけるきっかけにもなり得ます。
エンジニアに古文は必要か。
使わない知識を学ぶ必要はあるのか。
その知識が10年後必要になるかもしれないし、ならないかもしれないです。
使わない知識かどうか、今はまだわかりません。
その知識が本当に必要な知識になるかを吟味してじっとしているよりも、 少しずつでも学ぶことが大切です。
6.さいごに
今回はエンジニアとしての私の勉強法について紹介させていただきました。
この方法論は勉強したい事柄に限らず、幅広く応用できる手段であると自負しております。
無論、限られた時間でこれを一から十までこなすのは大変かと思います。
この記事の中で「あ、これいいな」と思ったところのみで結構ですので、ぜひお試しいただければと思います。