学習時間が1000時間を超えた

fjord1000

現在、フィヨルドブートキャンプというオンラインスクールで学習をしています。
その学習時間が1000時間を越えたので、振り返りとしてまとめていきます。
ちなみに、カリキュラム は公開されていますので興味のあるほうはそちらも参照してください。

学習状況のふりかえり

4月末から学習を開始しました。
学習時間: 1025時間経過日数: 154日(4月末~10月1日)
書いた日報の数: 128個
現在取り掛かっているプラクティス: Vue.JS
プラクティスの進捗: 72/86個( 完了したプラクティスの個数/プラクティスの総数)。約83%の進捗。

学習を始めたときは6 ヶ月で卒業できるという想定でしたが、まだまだ時間がかかりそうです。
多くのプラクティスにメンターさんのレビューがあり、プラクティスをやる時間に加えてレビュー対応があります。
レビューに関してはGitHubのプルリクエストがメインになっています。((データベース設計の課題など、提出物がコードでないものはブートキャンプのシステム上で提出します。それにもメンターさんのレビューがあります。
))

技術的に学んだこと

難しかった、記憶に残ったプラクティスについて何が大変だったか書いていきます。

sshの基本を理解する

自分で借りたサーバーにsshで接続しよう、というもの。
知識や仕組みを頭のなかでわかったつもりでも、実際サーバーにsshで接続しようとするところが難しかった。

【Ruby】ボウリングの計算プログラム

Rubyでボウリングのスコアを計算するプログラムを作る課題。
Atcoder をやっていたので多少は慣れていたけど、入り組んだロジックを書いたことが初めてだったり、コマンドライン引数の扱いについて学習しました。

【Ruby】lsコマンドを作る

LinuxコマンドlsをRubyで書いてみよう、という課題。
Fileクラスの扱いや細かい要件を満たすためにかなり苦労しました。

データベース設計

Twitterの主な機能に関してER図を作る、という課題。
書籍を読んで学習をしたものの、エンティティの抽出やそれぞれのエンティティの関係を見出すのが難しかったです。

Railsでユーザーフォローを作る

与えられたアプリケーションに関してフォロー機能を導入する、という課題。
事前にデータベースを設計して実装したものの、フォローとフォロワーの関係で混乱してしまい、非常に苦労しました。

Railsでコメント機能を導入する

コメント機能を導入する、という課題。
ポリモーフィック関連や応用的なルーティングについて学習しました。

オブジェクト指向プログラミング

ついにオブジェクト指向でRubyを書いてみよう、という課題。
チェリー本の7 章を参考にしながら、自分でクラスを作ってボウリングプログラムとlsコマンドのプログラムを書いていきました。

番外編: 輪読会の主催

フィヨルドブートキャンプでは、受講生が自主的に輪読会を開催しています。
自分も輪読会の主催をしました。読んだ本は、 「オブジェクト指向でなぜつくるのか」でした。
一人で読んでいたら挫折していたので、2ヶ月間全8回、受講生10名ほどと読み切ることができました。

フィヨルドブートキャンプ以外での活動・出来事

フィヨルド外での活動としては主に、以下のようなことをしました。

  • Fukuoka.rb

    • 毎週水曜日21からやっている勉強会。1 年ほど前からできるだけ参加するようにしていて、現役のエンジニアの方と交流できる良い機会になっています。
  • 西日暮里.rb

    • 月イチ開催の勉強会。こちらも1 年ほど前から参加していますが、少人数で技術の話を聞いています。
  • asakusa.rb

    • 著名なほうが多い、ということで参加してこなかったのですがRubyKaigi が行われたタイミングで参加してみました。
  • mitaka.rb

    • モブプロ形式でRailsアプリケーションを作っています。とても楽しい。
  • ISUCON11に出場

    • ブログ にも書いていますので、そちらに譲ります。

どうやって学習を習慣化するか

1日に約7時間は学習をしている計算になるので、どうやって学習を習慣化したのか書いていきます。

  • 学習時間を計測する

    • asanaと時間追跡ツールを使って自分がどれだけ学習できているのか認識する
  • 1週間ごとに何個プラクティスを提出できたか振り返る

    • 学習時間をもとに、何個のプラクティスを提出できたか振り返る
  • 計測した学習時間をもとに、削れる時間があったら潰す

    • 自分はスマホをつい見てしまいがちだったのでポモドーロ・テクニックを導入するとともに、スマホの電源を切るようにしました。

自己管理の必要性

フィヨルドブートキャンプでの学習には自己管理が必須です。 プラクティスの提出物に関するレビューはあるものの、メンタル面の管理は自分でする必要があります。((日報があり、そこにわからないことや辛いと感じていることを書くとメンターさんがアドバイスをくれます。また、最近はメンターとの1on1の機会も設けられ、相談しやすい環境ができつつあります。 ))

成長を実感していること

独学でもRailsやGit などの周辺知識を学習しましたが、カリキュラムとして体系立ててあるので独学の時よりも成長できていると感じることが多いです。

  • 実装の前にタスクを分けて実装する力
  • Linux, webサーバーの知識
  • Rubyでプログラム書く力
  • Ruby on Railsでのアプリケーション開発の基本
  • メンターのレビューによってコードの品質が高くなっている

これから

残りのプラクティスは「Vue.JS」「チーム開発」「自作サービス」です。
チーム開発と自作サービスは大変なことが予想されるので、これまで培ってきた知識をもとにやっていきたいです。
これまで個人開発しかしたことがないので、チーム開発はとても楽しみです。

就活に関して

福岡を拠点にしている会社がいいな、と思っています。福岡市がとても住みやすそうということ、個人的な事情で両親と近いほうがいいので福岡の会社で働きたいなと思っています。