はじめに
こんにちは!アメリカに住みながら独学でソフトウェアエンジニアを目指しているものです。
実は先日2カ月間いっていたアメリカの語学学校が終わました。
その2カ月間はソフトウェアエンジニアになるための勉強がメインというよりは英語の学習の合間に継続して勉強することのみを意識していたためそこまでタイトなスケジュールは組まないようにしていました。
しかし、月曜日から本格的に勉強をはじめるにあたって時間スケジュールを組みなおしたので、私のように独学かつフルコミットしてソフトウェアエンジニアを目指しているかたの参考になれば幸いです。
なお、まだソフトウェアエンジニアになれているわけではないので参考程度に見てください
私の現在の状態
- 4カ月独学で勉強継続(そのうちの2カ月は語学学校に行きながらやっていました)
- 現在勉強時間530時間程度。簡単な勉強時間や記録を毎日つけています
- 2カ月毎日Qiitaの投稿とGitHubへのpushとpullrequestを継続
勉強スケジュール
現在ソフトウェアエンジニアになるための勉強をはじめて約4カ月がたちましたが独学はとても難しくただ勉強すればいいというものではありません。私が意識していることを書いていきたいと思います
勉強してどのようなことがしたいのかを自覚する
独学で挫折する方のほとんどが、「プログラミングを勉強しよう!そのためには、、、」という目標の立て方をするような気がします。
プログラミングという手段がゴールとなってしまっているので、私生活でモチベーションが下がったとき等にあきらめてしまうのだと思います。
自分が達成しようとしているゴールを強く意識し、それを実現するためには、、、と目標からの逆引きをするのが一番効率的だと思います。
必要な勉強量を意識する
巷ではソフトウェアエンジニアになるためには、勉強時間は最低1000時間必要といわれています。
1000時間といわれれば、平日で1日8時間勉強し、土日に3時間程度勉強できればそこまで難しくないゴールだと思います。
漠然と時間数に圧倒されないことがまずは重要です。
その後、何を勉強するかをyoutubeやサイトで探しましょう。ここで軽い気持ちでソフトウェアエンジニアになろうとしている方は心がおられると思いますが、そのような覚悟で1000時間以上の学習は難しいと思うので自分の覚悟を確認するという意味でも確認するのがいいと思います。
ちなみに私が行った内容と今後の予定を箇条書きで書いていきます
今まで勉強した内容
- HTML (youtube)
- CSS (youtube)
- HTMLとCSSを使用して模写をする
- web入門(図解からまるわかりwebの技術しくみを読んでみた)
- Javascript(youtube)
- 3つの技術を使用して寿司だのようなタイピングゲームと数字あてゲーム
- Git,GitHubの基礎(Git&GitHubの教本)
- QiitaCLI(Qiitaの記事をCLIで投稿する機能。CLI操作になれるのでおすすめ)
- Linux(Linuxコマンド200本ノック)
- データベース(おうちでまなべるデータベースのきほん)
- SQL(Progate,おうちでまなべるデータベースのきほん)
- Rubyの入門書「ゼロから始めるRuby超入門」
- Rubyの初級~中級「たのしいRuby」
- Rubyのアウトプット50問ほど(現在進行中)
今後やる内容
- Ruby on rails
- REST API
- AWS
- Docker
- Kubernetes
- Terraform
- Linuxの応用
- CI/CD
- Webの仕組み
- Internetの仕組み
- Gitの応用
- Linter
- test
- セキュリティ
- TCP/IP
- リーダブルコード(コードをきれいに書くコツが書いてある)
- React
- Next.js
- SPA
スケジュール通り行かなくても自分を責めない
これは意外と思われる方もいるかもしれません。例えば8時に起きて勉強を始める予定が10時に起きてしまった場合多くの人は、寝坊してしまった自分が情けなくなく思い自分を責めてしまうと思います。
独学の場合は、そんなことがあっても気にせず継続させることのほうが重要なのです。
もし寝坊したとしても、勉強以外にとっている時間を削ればいいだけです。その日の勉強総量が減ったとしても、長い目で見ればその日だけなので切り替えて、少しでもいいからその日は勉強しましょう。
今まではしてきませんでしたが、今回からは寝坊したときように8時に起きたパターン以外にも9時や10時に起きたときの勉強スケジュールを組んでおきました。事前にくる困難を想定して置くとダメージが少ないと思います
勉強効率がよいのは朝。難しい内容は朝に持ってくる
私は午前中の2時間、お昼から夕方、夜と3段階で勉強する内容を分けてそれぞれ、新しく学ぶ内容、コードなどの実践、そこまで比重が重くない勉強と分けています。
午前中と午後の間には筋トレや英語の勉強、夕方から夜まではご飯を作るなど勉強がずっと続かないようなスケジュールを組むようにしています。
詳しいスケジュールが気になる方はコメントいただければ幸いです。