約7ヶ月半振り返り
8月1日からプログラミングを初めて7ヶ月と9日が経ちました。
現在の状況としては
8月1日から始めたテックキャンプ(半年間)を2月上旬に修了
その後、初めてオリジナルアプリを作りあげることが出来た
エンジニアになるために転職活動を始めた
という状況です。
ここまでの振り返りを行って、また次のステップへの優先順位(今自分に足りていない知識はどこか)を考えようと思います。
学習時間の振り返り
本日時点の学習時間はこちら。
学んだ内容 | 時間 |
---|---|
AWS | 25:15 |
AWS EC2 | 8:55 |
css | 69:00 |
Docker/PHP | 8:15 |
GitHub | 3:00 |
Heroku | 6:00 |
html | 26:15 |
JavaScript | 44:30 |
Rails | 1255:50 |
Ruby | 60:15 |
SQL | 49:25 |
アルゴリズム | 28:30 |
セキュリティ対策 | 7:00 |
予備知識 | 5:20 |
合計 | 1597時間30分 |
2/25の記事の学習時間、計算式が入っているセル足りておらず、今日もう一度確認したら1500時間超えていた。嬉しい。
記録のいいところは、データで自分を励ますことができること。出来なかった時に「でもRailsに比べたら勉強時間少ないからだ、またコツコツやろう」って前向きになれる。
毎日の習慣づけとして「1日15分以上、学ぶこと」というマイルールで行っている。(ハードルが低い方が気持ちが楽なため。)
最近は、朝5時半に起きて2時間勉強、会社が終わって帰宅後夜ご飯を食べたら1時間〜2時間というルーティンが出来つつある☺️(意識せずにパソコンを開くようになった)
土日も朝起きたらパソコンを開く、お腹が空いたらご飯を食べるというようなスタイルで、向き合うことが出来ている。
なんだかんだ、プログラミングが好きだし、楽しい。
4ヶ月半〜7ヶ月半の間に理解が深まったこと・新しくチャレンジしたこと
GitHubの知識
意識したこと:使い方をもっとマスターできるようになること。誰かと一緒に開発していることを想像しながらメッセージ等も考えること。
ミニアプリを含め、10個以上、アプリの新規作成からギットハブへの連携を行ったことで、ブランチの切り方、イシューの作り方、マージ・プルリクの仕方などだいぶ慣れた。
GUI
に慣れたので、後半ではCLI
にチャレンジ出来た。コミットの粒度はどのようなレベルだと良いか毎回考えながら作っていた。新しくなるにつれて少しずつ成長したかな?
嬉しかったのはテスト駆動開発をした時に今までで一番、コミット粒度を揃えられたと思えたこと。
GitHub
が当たり前になると今自分が編集しているファイルはどこなのか一目でわかるのでわかりやすい!戻すのも楽。(逆に昔のGithubにあげていないミニアプリは、開いた時に、気づかずコードを上書きしてしまいそうで怖いと感じるようになった。不便。笑)
オリジナルアプリの作成
意識したこと:思いを形にするプロセスやエンドユーザーのことを一番に考えて実装し続けること。(ユーザーインタビューをして”本当に必要な機能は何か”、”どうやったらユーザーは使いやすいか”"ユーザーに楽しんでもらえるか"等)
とにかく、思いを設計するのが難しかった!!!どうやったら振る舞いごとに、DB設計できるだろうか、機能を分られるだろうか、そもそもどうやって形にするのか(涙)四苦八苦しながら、要件定義に落とし込んでDB設計に一番時間がかかったと思う。
そして思いを形にするために「一つのビューに複数のコントローラーを表示させたい」「対話調のセルフコンパッションにしたい」など、どう実現したらいいのかぐぐりながら実装方法を考えた。とても苦労した。
でも嬉しかったのは、どうしてもググっても解決しない時に、自分の状況を相手に伝えられるようになったこと。オリジナルアプリでは不明点をメンターさんに聞くことは出来ないため、テラテイルなどで、自分の状況をいかに言語化して相手に伝え、解消したい部分を答えとして得ることができるか(教えてくださる方の時間をなるべく減らして聞くにはどうしたらいいか)より鍛えられた。
テラテイルは、最初は返事もらえなかったり、自分の意図していない回答が返ってきたりすることがあったけれど、後半は聞きたいことが返ってくる&割とすぐ返ってくるというありがたい状況が起きた。(教えてくださった方、本当にありがとうございました。)
「相手に聞く力」も、エンジニアになった後、必要な力だと思い、どうやったらその力を鍛えられるか考えながら質問をしていた。(まずは自分の頭でしっかり考えて仮説検証をすること。それでも分からない時はどうやったら相手の貴重な時間をいただいて端的に質問できるか、言語化したり画像を使って工夫したり、お互いに気持ちよく、やりとりするためには、どうしたらいいかも考えること)
実際に、使ってもらったユーザーからフィードバックをもらえたことも自分にとって励みになった。(改善の余地があることもまたやりがいがある)
自分の思いを一つ形にできて、めちゃくちゃ嬉しかった(半年前では考えられなかった)
これを自分の思いではなく、困っている方や必要としている方の思いを形にできたらどんなに楽しいだろうかと感じたことでもあった。
テスト駆動開発
ウィキペディアを見てもいまいちよくわからなかったが、たまたま和田卓人さんの動画を見つけて勉強になったこと。
オリジナルアプリの最後の機能でテスト駆動開発を実際に試してできたこと。
レッドグリーンリファクタリングの手法は、心配性な自分にとって合っているし、長期的な目線で考えれば、アプリケーションを改善していく上で自分を楽にさせてくれるものだと実感した。
SQLの知識
コーディングテストのおかげで理解が深まった。
データをとってくるだけでなくて、色々加工できることを学べたのが大きかった。
サブクエリなども一瞬コードを見てギョッとしたりするけれど、よくよく見ると入れ子構造なだけだったり紐解いて見ると面白いと思った。
また、データベースを管理する知識を学べたのもよかった(トランザクション等)
その他全般
以前に比べると、エラー文が出ても一つ一つググって解決できる幅が広がったと思う。
Githubも見ても使い方がわからなかったけれど、今では
README
を見て概要を掴んだり、Issue
を見て同じエラーに遭遇して解決している人いないかなと選択肢が広がったり、リファレンスを見てこういう意味だろうか?と自分なりに解決出来る回数も増えたと思う。
今、興味があって学んでいきたいこと・足りないと感じている知識(優先順位)
(1)アルゴリズム
理由:フレームワークではなく一つの言語の型をしっかり習得したいため。
フレームワークの時に、RailsであればMVCやその中でもコントローラーの7つのアクションなど、機能に助けられている部分が多くある。
自分で必要な機能を作るには、言語の型をしっかり理解することと、解法としてアルゴリズムのことを学んでいかにメモリ容量を少なく、そして速くできるかの力が必要だと思ったため。
具体的には、アットコーダーにチャレンジして、一つ一つ、スキルアップしていきたい。(問題文など、実践しないと体に身につかないということも感じた。)
アルゴリズムについては、知識0から、ソートの仕方からグラフまで考え方の知識の引き出しは広がったが、それを一文ずつコードに落とし込む力がないため、その部分を強化したい。
(2)正規表現
検索だけでなく、畳み込みや置き換えなど、大きな武器になると感じたため。
呪文のように見えているものを読めるようになり、書けるようになりたい。リファクタリング力に繋がるはず。
いろんな言語に共通して使える知識というのもまた嬉しい。
(3)テストコードの幅を増やす
まだまだ一部のテストコードしか書けないと感じているため。
思った通りの実装か、テストコードできっちり表現できるようになりたい。
ゆくゆくの時短に繋がるため。
いまいち、rspec以外の使い方がまだまだなので、広げていきたいなあ。(rspecも一部の構文しか知らないと思うのでチャレンジしてみよう)
小さい部分もコードを書くのって、フレームワーク内でどうやってやるんだろう?その辺りもうちょっと力つけたい。
感想
オリジナルアプリの基本実装が終わった後、2週間近くSQLとアルゴリズム、Rubyのことを必死に勉強していた。昨日久しぶりにオリジナルアプリの続きを実装したら、見方が変わっていて(もうちょっとここきれいに書けないかなとか、キータの記事のメソッドの意味こういう意味だったのかとか)必死に向き合ったこと無駄ではないと思えて嬉しかった。
最近私が好きだなと思う人が共通で「悩まない。行動する。」という言葉を口にしていた。本当にその通りで、将来のことを悩んでも何も始まらないので、今に集中して、ひたすらコードを書いたり、アウトプットしたり、普段の仕事でも改善したいことに取り組んだり、一歩一歩進んでいきたいと思っている。
とりあえず、アットコーダーのサイトで練習してみよう!
読んでくれてありがとうございました。