# プログラミング # 技術的な話題# 技術的な話題-勉強

実際に手を動かして勉強しないと技術は身につかない。

実際に手を動かして勉強しないと技術は身につかない。

実際に手を動かして勉強しないと技術は身につかない。

プログラマの勉強についてまとめたい。

最近、仕事でFlutterのproviderを使って色々と状態管理とかやろうと思ってるんですよ。でも、難しすぎて何が何だか分からない。

一応、僕は職業がプログラマであるので、色々とプログラミングで使えそうな勉強法とかはリストに集めて分析してたりする。

プログラマにとって普段から勉強しておくのは必要なことであって、死ぬまで一生勉強が続くと言っても過言ではない。だからこうやって、勉強で使えそうなサイトなどを見つけるとリンク集を作ったりするのだけど、実際、こんなリンク集を作っても全然勉強しないのよねー。

僕はプログラマとしては全然レベルは低い方である。プログラマですごい人というのは、一日中何かプログラミングについて考えていて、仕事の疲れは趣味のプログラミングで癒やすとか口走ったりする頭のおかしな人達ばかりである。

僕も、ちょっとは勉強を頑張って、皆から尊敬されるようなつよつよプログラマを目指すべきかな? そう考えて今回はプログラマの勉強法についてまとめてみようと思う。

勉強してもっと知識を深めたいのはコンピュータサイエンス

自分はwebプログラマからアプリプログラマになったケースだけど、コンピュータサイエンスってとても重要だと思う。

昔だったらブロックチェーンでいまだと機械学習とかDXとか、流行りの技術というのは昔から新しいものがたくさん現れては消えていっている。これらの技術を勉強するのも重要ではあるんだけど、どうしても一過性のもので、頑張って身につけた所で陳腐化してしまうと意味がなくなってしまう。

プログラミングの勉強では枯れた技術を身につけるのが良いよと言われている。どれだけ世の中が進んでいって新しい技術が生まれても、基盤の方にあるコンピュータサイエンスなどは陳腐化しないからだ。

プログラマが知ってないといけないコンピュータサイエンスの知識についてはこちらが詳しいのではないと思う。

数学的な知識だったり、プログラムがなぜ動くかの仕組みだったりは、基本情報技術者で基礎は勉強するので、あれは馬鹿にせずに取っといた方が良いですね。そのあとは応用情報とか狙っておけば、コンピュータサイエンスの勉強には困らない気がします。

でも、現場で僕もコーディングを色々とやるけど、コンピュータサイエンスって勉強した所で実務にどう活かすのかって分からないんですよね。組み込みとかだったらマシンスペックが過酷だったりするので効率的なアルゴリズムを求められたりするのかもしれないけど、僕がやってるのはアプリ開発なので、せいぜいデザインパターンを求められる程度。競技プログラミングとかやるなら使うのかもしれないけど、実務でコンピュータサイエンスを使う場所ってよく分からなかったりしますね。

実戦で使う勉強法とはこんな感じの気がする。

実際の仕事の現場で必要な勉強のやりかたとしては、これから動かさないとならないシステムに対して必要な知識をなるべく高速で技術を身に付けないといけないということだ。俗に言う遅延評価勉強法*1ってやつですよ。

遅延評価学習法って具体的にはどういう風なやり方でやんの?的なことを考えたりしてたんだけど、次のような感じでやるのかもしれない。

なぜか動かない場所があるのであれば、それに関連するサンプルコードなどをStack Overflowなどから集めてくる。そして実際にそれを手元で動かしてみてどうやって動くかを把握していく。

システムを動かすためには知識ばかりをいくら集めても意味がないんですよね。自分が特にやりがちなんですけど、ネットをフラフラして使わない知識ばかりを集めてしまって、それで全然手を動かさない。これだと全然経験が伴わないからなにも勉強にはならないんですね。

まとめ

技術の勉強に関しては手を動かして体得するのが一番大事。ネットに載ってるハウトゥーだけ読んで理解したつもりだと何もできない。

実際さ、自分がやってる技術の勉強のつもりのことって、ネットをさまよって技術情報を集めているだけなので、これだと技術の体得にまでは至れてないのよね。実際にその得られた知識をいろいろと実装してみて確認して、身体で理解しておくことは必要なことであるなと考えている。

コンピュータサイエンスとかそういったことに関しても、勉強して使えるようになっておきたいなと思いました。

あわせてよみたい

*1:ハッカーと遅延評価勉強法 - LukeSilvia’s diary https://lukesilvia.hatenablog.com/entry/20080402/1207149044