まんじ

フリーランスなウェブエンジニアをしてますう。25歳の頃にプログラミングを始めて27歳からフリーランスエンジニアになって生きてます

プログラミングで効率が良いと思われる勉強法

  • 2024/05/22
  • 2024/07/22
  1. プログラミング入門
プログラミングで効率が良いと思われる勉強法

始めに

こんにちは!
まんじです!

今回はプログラミングの勉強法で、「明らかにこれは効率が良いだろ」てきなやつをご紹介したいと思います。

結論から書くと、ここらへんです。

  • 何かの手段としてググる or AIに聞きながら目的を果たす
    • 個人開発で何かを作る
    • 実務のタスクをこなす
    • 実務のコードや使ってる技術やドメイン知識などを調べる
    • 実務で使ってる技術を勉強する
  • インプット系(なんとなく知ってることは増える)
    • 本を買って読む
    • Kindle Unlimitedの技術書を使う
    • Qiitaを読む
    • Zennを読む
    • Youtubeを見る
    • Mediumを読む
    • Devを読む

プログラミングの勉強に関して言うと、とにかくアウトプットベースでインプットしてれば伸びるんじゃね?説が自分の中では強めというか確信に至ってます。

プログラミング使って働いたり、何か作ったりすることをベースにインプットをしていく、みたいな感じです。

ということで、詳しく書いていくぅ。

何かの手段としてググる or AIに聞きながら目的を果たす

「目的のための手段としてプログラミングをやる」ってのが一応、ナイスな勉強法の抽象化した表現です。

具体例を書いてみます。

個人開発で何かを作る

ポートフォリオ作りも個人開発で何かを作ることの1つなんですが、個人開発でなんかしらのアプリやらシステムを作るのはプログラミングの勉強としてかなり良いと思います。

自分も今まで4~5個ぐらい作ってきましたけど、「作る」もしくは「稼ぐために作る」という目的があってそのために必要な技術を全体的に勉強できたので今振り返ると技術力向上に役立ったと思ってます。

ただ、個人開発で勉強するデメリットとしては、「自分のできる範囲で妥協しがち」というのがあります。

例えば、実務だったら微妙な実装とか意味不明な実装(コードが微妙だけど動くみたいな)の場合は、改善が必要になります。

一方で個人で開発して勉強していると、そこらへんが適当でも問題ないので、全体的に勉強にはなってもいわゆる「実務レベルのコード」にはならないことが多いです。

とは言っても、そういったコードや技術的な妥協点とかを含めても、個人開発でゴリゴリ何かを作るのは勉強にはなります。

実務のタスクをこなす

なんだかんだでプログラミングの勉強法として1番効率が良いんじゃね?と思われる方法が、「実務のタスクをこなす」です。

個人的には「実務のタスクをこなしながら、個人開発で同じ技術を使う」ってのが今振り返ってみるとすごく効率が良かったというか技術力が伸びたなって思うシーンです。

実務でタスクをやっていると上司とか同僚からレビューもらいながらで開発できたり、実務レベルのコードじゃないと受け入れられない体勢になるので嫌でも技術レベルが上がります。

  • コードの書き方
  • ナイスなコード、バッドなコード
  • ナイスな実装、バッドな実装
  • 環境(linterがあるとか, Dockerとか, AWSとか)
  • アーキテクチャ

こういった実際に仕事してみないと分からない感じの部分も向上しますし、何より肌感で「何年ぐらいの人はこんぐらいできるんだな〜」みたいなのが1番勉強になります。

プログラミング自体もそうだし、プログラミング周辺環境も含めて勉強になるって感じです!

ぶっちゃけ、脳死で大量に労働しまくれば、技術力はおそらく最も伸びる気がします。

実務のコードや使ってる技術やドメイン知識などを調べる

実務で開発をしていると、プロダクトのコードやその周辺技術などの設定やらデータベース設計やらが見れます。

そのコードを使って、使用しているライブラリを見たり調べたり、データベースの設計やらを見たり、苦手な箇所を調べたりAIに聞いたりすることも、効率良い勉強方法の1つだと思います。

この方法を使うと仕事している現場での評価も上がりやすくなりますし、実務レベルの技術力が爆上げされるので、なんていうかいろいろと本当に良いです。

実装タスクなどをプライベートな時間でこなしつつ、普段よく分からないけどなんとなくやっている部分を改めて落ち着いて調べてみるとかもかなり効率が良いんじゃないかな〜って思います。

実務で使ってる技術を勉強する

若干上とかぶるんですけど、実務で使ってる技術を勉強するのも効率が良いです。

実務で使っている技術を勉強する: インプット
実務で使う: アウトプット

このサイクルが確立されるので、より効率良く勉強できます。

一方で実務で使ってない技術とかを日々勉強しても、あんまり定着しない感というか、実際に使わないとあんまり定着しない可能性が高いです。

ここでちょいまとめると…

「アウトプットのためのインプット」ができれば、プログラミングの勉強法としてはかなりよさげです。

インプット系(なんとなく知ってることは増える)

インプット系は少し難しくて、ただひたすらインプットしまくってもプログラミングというか技術力はあんまり上がりません。(と自分は思っています。)

知ってることは増えるんだけど、いざ実装とかそれをなんらかのアウトプットにしようとした時にスピードが異様に遅いとか、知ってるだけで役に立ってないとか、そういう現象が起こりがちです。

例えば、「AWSのlambdaがサーバーレスでサーバーを気にしないでコードを実行できる、lambda関数はレイヤー層からライブラリとかインポートできてClould Watchでログが見れる」みたいなこと(本とか読めば書いてある)を知っていたところで、実装できるかっていうとまた別の話だったりします。

なので、インプットはあくまでインプットって感じではあります。

必要ではあるけどそれでは十分じゃないです。

(実装で必要になれば嫌でもインプット含めてアウトプットできるので、それがやっぱり何度考えてもベストだと思う)

本を買って読む

技術書には2種類ぐらいあって、1つ目が体系的に網羅されて解説されてる系、2つ目がハンズオン系で手を動かしてやってみよう系です。

体系的に網羅されて解説されてる系はネットで無料で調べて情報をインプットするよりも多少効率が良いような気がする(気がするだけ)のと、なんとなく勉強してる感が出て少しモチベが上がるかもしれません。

ハンズオン系はその通り動かせば入門的な内容はそれなりに知れるので、入門の時にまあまあ効率が良いです。

技術書は1冊3000~4000円ぐらいすることが多くて「高えええええ!!!」って思っていた時期がぼくにもあったんですけど、月1万円ぐらいまでの読書費用(自己投資費用)って考えてお金を使うと高く感じなくなるのと、月1万円本買って読み切るのはかなりキツイのでそういうマインドで買うといいのかなって思います。

あとは開業してお金稼ぐと(フリーランスやら副業)経費につっこめるので、なんだかお得に買えてる気持ちになります。

という余談も含みましたが、本はまぁまぁ、、、いいかもしれません。まぁまぁ。

別になくてもいけるっちゃいけます。

Kindle Unlimitedの技術書を使う

本と同じなんですけど、Kindle Unlimitedに紙では出版されてないけど、登録されてる系の本を使うのも結構良いっちゃ良いです。

小さいトピックごとにハンズオン形式が多いので、ぼくはプログラミング入門時に使いました。

Qiitaを読む

Qiitaに関しては移動中とかウン●してる時とかに、自分が今メインで勉強してるテーマを調べたり、エンジニア界隈のトレンドを知るって意味だと勉強に良いと思います。

リアルとかだと「Qiitaに記事を書くやつはきもいし間違ってる」みたく言う人もいるんですけど、個人的には間違ってても80%ぐらいあってれば良いと思うのし間違ってると後で気づくので、良いと思ってます。

特に特定のトピックをQiita内の記事読みまくるとかは、技術書買って読む代わりになるので、結構おすすめです。

例えば、Docker勉強しようと思った時にわざわざDockerの基本がわかるウンタラ3000円の本じゃなくて、Qiitaで記事をいっぱい読んで手を動かし始めれば理解できる、てきな感じです。

どのみちそれなりに使えるレベルにするには手を動かしてハマってググったりして解決するしかないので、その最初のステップとしてはQiitaはすごく使えます。

Zennを読む

Qiitaとほぼ同じなんですけど、Zennのがなんか少しレベルが高いというかモダンな感じはします。

Qiita: 駆け出しエンジニアポエムと入門系の記事が多い
Zenn: ちゃんと働いてるエンジニアの人が純粋に技術記事を書いてる雰囲気

Zennも同じように知りたいトピックを調べたりすればいいのと、トップページに出てくる記事が結構イマドキなトピックが多いのでトレンドを知る的な意味合いの勉強として良いと思われます。

Youtubeを見る

Youtubeもめちゃくちゃいろいろインプット系からハンズオン系のリソースがあります。

  • 3分ぐらいで解説する系の短い解説系
  • 普通に解説系
  • ハンズオン系、一緒に手を動かそう系

日本語に限らず英語にも広げると、無料でハイクオリティかつほぼ無限のリソースが使えます。

移動中に見て勉強するとかそういう使い方もできますし、英語で見て英語も一緒に勉強するとかもできます。

英語の勉強にもなるので、めっちゃいい。

Mediumを読む

英語なんですけど、技術に限らずいろんなトピックの記事が公開されています。

プログラミング関連の記事もたくさんあって英語の勉強にもなります。

たまに気が向いたら、読みます。たまに。

Devを読む

レイアウト的にもQiitaの英語版というか、Qiitaが多分Devの日本語版です。

使い方はQiitaとほぼ同じで、なんとなくトップページを見てトレンドを把握したり、知りたいトピックについて検索かければその手の記事がいっぱい出てきます。

個人的には全く見ていない。なぜかは分からない。

まとめ

長々を書いてしまったんですけど、効率が良い感じのは「実務やりながら周辺技術を調べたり実務やりまくる」「実務で使ってる技術を個人開発でも使う」とかそこらへんだと思います。

実務に入る前なら、何かを作りながらその周辺技術で使う技術を勉強してそれを実際に使うイメージです。

あとは寝る前とか移動中とかにちょびっとインプットメインの勉強(技術書読むとかYoutubeで勉強したい技術系見るとか)をすると知ってる範囲が広がるので、アウトプットの範囲が広げられます。

まんじ

フリーランスなウェブエンジニアをしてますう。25歳の頃にプログラミングを始めて27歳からフリーランスエンジニアになって生きてます