はじめに
はじめまして!
RUNTEQに入学してから【100日で1000時間学習する】という目標を達成したので、改めて学習した内容をまとめていきたいと思います。
学習分野
1000時間の中で以下のような分野を学習しました。
- Ruby
- Ruby on Rails
- JavaScript
- GitHub
- SQL
- DB設計
- Linux
- Docker
内訳
学習分野のそれぞれの内訳は以下のようになります。Ruby、Ruby on Railsで700時間ほど学習に充てました。理由については後述します。
主な学習教材
- スクールのカリキュラム
- ゼロからわかる Ruby 超入門
- プロを目指す人のためのRuby入門
- 独習Ruby
- Railsチュートリアル(〜CHAPTER8まで現在学習中)
- パーフェクト Ruby on Rails
- Ruby on Rails 6 実践ガイド
- Ruby on Rails 6 実践ガイド 機能拡張編
- Ruby on Rails 7ポケットリファレンス
- Everyday Rails - RSpecによるRailsテスト入門
- マンガでわかるデータベース
- スッキリわかるSQL
- プロになるためのWeb技術入門
- イラスト図解式 この一冊で全部わかるWeb技術の基本
1000時間を学習するにあたって意識したこと
1. モチベーション設計
この目標を達成するにあたり、モチベーション設計が大切だと考えたので学ぶ分野をまず初めに絞りました。1000時間という時間を考えた時に、何か複数の分野(React、Docker、Terraformなど)を並行して学ぶには足りない時間だと考えたからです。
その為、スクールではRuby on Railsが中心のカリキュラム構成だったため、Ruby、Ruby on Railsを重点的に学ぶことで、モチベーション低下を防ぎました。
2.イベント駆動型学習
スクール内ではイベントを自主的に企画できるようになっていたため、勉強会を企画しました。自分の思考の整理だったり、苦手だと感じている分野について企画し、これまで3度開催しました。企画した以上、わかりやすく教える必要があるという責任も生まれ、約150人以上の方に参加していただきました。今後も続けていきたいと考えています。
- Gitをカレーに例えてチーム開発の流れを考えてみよう!(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/rk9QeGWdh)
- テストは何かを理解してRSpecの基礎に慣れてみよう!(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/HJ2ylBHd3 )
- デバッグの方法をたくさん知ってエラーと仲良くなろう!(https://hackmd.io/@0ybq7E7CT5GYxDP8A9clgA/S1PqjDmch)
3.GitHubに草を生やす
やはり数字として積み上がっていくのは気持ちが良いです。3ヶ月弱で800コントリビューション付けることができました。モチベーション設計の観点から学習初期は『草を生やすこと自体が目的』にはなっており、commitの粒度であったり、お作法的な部分で反しておりますが、やる気を維持する上では個人的には有効な戦略ではあったと考えています。
1000時間学習を通して成長したこと
1000時間学習した段階で実装力に関しては特に成長を実感しています。ここでいう実装力というのは僕の中で以下の2つに分けられると思っています。
公式ドキュメントを読んで実装手順を考える能力
カリキュラムが公式ドキュメントをもとに実装する要件が多かったため、Githubをはじめ、Railsガイドなどの公式ドキュメントを読むことには比較的慣れました。学習初期から一次情報から情報を参照するように癖づけられたことは非常に良かったと感じています。
コードリーディング力
カリキュラム内で実務に近いWebサービスのバグ修正だったり、機能追加を行う実装に取り組みました。詳細は言えませんが、デバッガを用いて調査を行い、バグ原因箇所の特定、改修手順の把握、修正とコードを読みながら論理的に実装する能力が身につきました。
質問力
実装力とは別ですが、質問の作り方も初期から意識してきました。現場では担当タスクに工数が決められていることもあり、Webアプリ(https://hamattimer.app) を活用し、【限られた時間の中で、最小のテキストコミュニケーションで意図した回答がもらえるような質問】を意識しながら、実装を進めてきました。
今後の課題
アルゴリズム
実装する上で冗長な書き方になってしまう事が多いため、paiza、AtCoderを活用し伸ばしていきたいです。
設計
個人開発をする機会も増えてきましたが、実装途中で設計で考え直す部分も出てきてしまっているので、引き続き開発を通して身につけていきたいです。
その他
個人開発に関しても最近は楽しめるようになり、Next.jsとTypeScriptを使ってアプリも作ってみました。RUNTEQ内で青春に関するイベントが開催された際に、青春をテーマに作ったミニアプリです。
- おやつは何円まで?(https://oyatsu-ha-nanenmade.vercel.app/)
RUNTEQについて
カリキュラムの難易度、開催イベントの量、キャリアトレーナーなどをはじめとする運営陣の手厚いサポート、控えめに言っても受講してよかったと実感しています。最近カリキュラムがアップデートされたことや、何に挑戦するにしても受講生同士で協力したり、悩みも相談しやすい環境でもあるので、カリキュラムは難しいですが、本気でエンジニアになりたい方にとってはこれ以上ない環境だと思います。
まとめ
これまでRuby、Railsを中心に学んできました。今後は、少しずつJavaScript、Linux、Dockerなどの学習も増やしていき、エンジニアとして成長できるように活動していきたいです!
最後まで読んでいただき、ありがとうございました!