[[📒Productivityを上げるために大切な100のこと]] No28. 🥈
----
私はエンジニアだ。そのため `言語` とは日本語や英語のような語学ではなく、プログラミング言語のことを指している。エンジニアでない方にはピンとこないかもしれないが、今までの経験を活かしつつ学べる新しい分野と思ってもらえれば幸いだ。
私が**毎年新しい言語を学ぶ**理由は3つある。
1. 脳のマンネリ化を防ぐため
2. 思考の幅を広げるため
3. 会話の引き出しを広げるため
## 脳のマンネリ化を防ぐ
新しい世界に足を踏み入れたとき、最初の1年は知らないことばかりで大変だろう。しかし、数年も経つと慣れが生じて、今まで培った知識だけで生きていけるようになる。そのため、人によっては==新しいことを学べない脳になってしまう==。これを脳のマンネリ化と表現した。
言語でなくてもいい。少なくとも1年に1つはそれなりに学習が必要な新しいことを学んでみよう。定期的に刺激されることで、新しいチャレンジへの心理的ハードルも下がると思う。
## 思考の幅を広げる
仕事をしている大抵のエンジニアにとって、 `言語` は手段であり目的ではない。特定の `言語` を使って必要とされるシステムを開発することが目的だ。そのため、異なる[[プログラミングパラダイム]]の `言語` を学べば学ぶほど、設計などの思考に対する幅が広がる。
よく挙げられる[[プログラミングパラダイム]]は以下の3つだ。学んだことのない[[プログラミングパラダイム]]があればチャレンジしてみよう。
- [[手続き型プログラミング]]
- [[オブジェクト指向プログラミング]]
- [[関数型プログラミング]]
## 会話の引き出しを広げる
英語や第2外国語と同様、知っているプログラミング言語が多ければ多いほど、エンジニアとの話が盛り上がりやすい。知識の深い言語であれば上級者とより高みを目指したり、初級者に普及するのも良いだろう。知識の浅い言語であれば中級者や上級者から教えてもらうといい。
別の言語を学ぶときや設計の話をするときも、以下のようにラフな言い回しでコミュニケーションがとれるので楽だ。
- 『[[Python]]の3系移行くらい大変でした』
- 『[[Scala]]の[[Implicit conversion]]みたいに辛くなりそうですね』
- 『[[Rust]]の[[構造体 (Rust)|構造体]]や[[トレイト]]は、[[メソッド (Go)|メソッド]]のみたいですね』
年々習得する言語も増えるので自信や余裕にも繋がると思う。使えるかどうかはあとで考えればいいのだ。