デザインパターンについて学ぶなど。

今更かもしれないが

デザインパターンの本を持っていて、一通り読み進めたが、ふと思い出した時にあれってどんな実装方法だったっけ?となりがちなので改めて読んで概念を理解した上で写経してあー。こんな感じだったなぁと思いつつひたすら手を動かす。

以前読んでいた時(Javaについて学び始めの頃)は、とにかくインプットが欲しくていろんな本を読みあさっていたが、やはり勉強と同じで概念をしっかり理解して定着させるためにはただ読みあさり続けるだけではなくて、こうした形で何かしらの記事にしたり、実際に手を動かすことが何より近道だとひしひしと感じている。

技術者なんだったら困った時に調べればいいじゃん!という考え方も頭の片隅にはあるが、それには限度があって、実際に何かしらの技術が好きでやっているならば調べなくてもできる範囲を増やしていくべきだと思うし、何より楽しんでやれるならそれは勉強ではなく、これは遊びであるという認識に近い。

なのでゲームや最近ハマっている麻雀、漫画やアニメを見るなどの娯楽と大して変わらない。とても楽しくやれている。

しかしあまりにも技術が多すぎてどういうことをメインに学ぶべきか、という問題はある。

メインに据えるべきは相対的に知識が陳腐化しにくいCSの分野ではあると思う。

いくつか理由があるが、一番メインの理由は僕が情報系の学部を卒業していないからだ。
これは技術者として明らかな差が生じる要因で、データ構造やアルゴリズムといった基本的な概念すら専門的に学んでいないのだ。
なのでそういった人たちとの差を埋めるためにどこかで4年間の差を取り戻さなければならない。そのために一般的な情報系学部の大学生が買うようなCSの教科書(論理回路やOS、アーキテクチャなど)を買って勉強しているが、昔中学高校の理科の授業で習った時よりすんなり入ってくる。やはりこれも進んで勉強しているからなのだろうか。

それに伴って記事を書いているのが「ゼロから始めるLeetCode」で、データ構造とアルゴリズムは最近は日系企業でもコーディング面接が多く行われ始めているので、最初に対策すべきだろうと感じて書き始めた。
ただ、それ以外にもまだまだ穴は多く、ネットワークやセキュリティなどを端的に説明してくださいとなると言葉に詰まるし、恐らく覚えている量も他の技術者に比べて相対的に少ない。

確かにすぐに年収などをあげたいのであれば流行りのフレームワークやクラウド周りを集中的に勉強すれば良いのだろうが、それではいつか近い将来に根本的な原理を理解しないままに使ってしまうことになりそうでとても怖い。

日に日に技術は曖昧化され、次第に人間が触る部分はより簡単な部分になりつつあるため、せめて技術者をこれからも名乗っていきたと考えているのであれば、そういった根本的な原理を知っておきたい。後将来的にOSSとかやってみたいし、そうなるとCSの分野を最低限でも知っておいた方が後々レバレッジが効きそう・・・な予感がする。

まぁ技術の進歩は速いし、この考え自体が誤りかもしれないが、今の僕が考えうる最善手はこれなのでやるしかない。

あ、デザインパターンの写経はここで管理してます。

コメント

このブログの人気の投稿

Braveブラウザ(iPhone,iPad)にオフラインでもYouTubeの動画が視聴可能なPlaylist機能が追加されていたので使い方をまとめてみた。

Braveブラウザの同期機能をiPhoneで設定した話。

自作のChrome Extensionをインポートした時に "Invalid value for 'content_scripts[0].matches[0]': Empty path."というエラーが出たので解決した