koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

FJORD BOOT CAMPで1000時間勉強しました

はじめに

2019年も終わりということですが、嬉しいことにFJORD BOOT CAMPというプログラミングスクールで勉強を初めてから12月30日で1000時間が経ちました😆

f:id:NMP300:20191231140321p:plain
合計学習時間

f:id:NMP300:20191231140350p:plain
FJORD BOOT CAMPではGithubのように、学習した日に草?が生える

学習スピードという点では、受講生の中では遅いのですが(本当に速い人は600時間弱で卒業されている)、飽きっぽい私が、ここまでコツコツと勉強を続けることができたという意味で、とても嬉しいです。

そこで、この1000時間、どのようなことを学んできたのかということを感想を交えてまとめていきたいと思います。

bootcamp.fjord.jp

私の背景

元々は大学院生でした

「お前は何者なんだよ!!」と気になる方もいらっしゃると思うので、私の背景について書きます。

私は、元々臨床心理学を専攻する大学院生でした。 忙しいながらも、それなりに充実していたと思われる大学院生活を送っていたのですが、修士2年の秋ごろに心身を壊してしまいました。

原因としては、過労のように思われます。 元々、完全主義、忙しくありたい病でして、スケジュール帳で空白が空いているのが許せない質でした。

そのため、研究、実習、授業、アルバイト、ボランティアなど自分が可能な限り予定を埋めて行った結果、その作業量をこなすのに朝8時に学校に出て、夜2時頃に家に帰るというような生活を送っていました。

そのような無理な生活がたたって、心身を壊してしまったという流れです。

病気療養中にプログラミングに出会う

半年ほど療養して、病状が快復した頃に、「何か新しいことをやってみたい」、「過労で倒れたために、柔軟に働ける職種に就きたい」という思い、なんとなくYoutubeを見ていたところ、プログラミングの存在を知り、勉強してみようと思いました。

FJORD BOOT CAMPに入る

プログラミングを始めようと最初に取り組んだのはProgateのHTMLとCSSでした。 それまで、HTMLとCSSの存在は知っていたのですが、自分で手を動かしたことはありませんでした。

それらを進めていくうちに、「プログラミングって、面白いかも」と思うようになり、もっと本格的に勉強してみたいという気持ちが強くなりました。

そこで、ネットで検索して、色々なプログラミングスクールの存在を知りましたが、どこも「受講料が高い・・・😭」となり、一番リーズナブルな値段で受講することができる、FJORD BOOT CAMPに入ってみることにしました。

実際に入会したのが2019年6月16日で、本格的に勉強をし始めて「プログラミング面白い‼️」、「これを職業としたい‼️」という気持ちが強くなり、復学するのにも不安を感じていたことも相まり、大学院を退学しました。

現在は、プログラマーとしての就職を目指して、FJORD BOOT CAMPでの勉強に集中している、という感じです。

この1000時間でやってきたこと

FJORD BOOT CAMPではカリキュラムのことをプラクティスと呼ぶのですが、大雑把ですが以下のようなプラクティスをこなしてきました。

具体的にどのようなプラクティスが用意されているかについては、上記のFJORD BOOT CAMPのサイトに記載されていますので、ご覧ください。

  • Terminalを学ぶ
  • HTML & CSSの基本を学び、実際に書いてみる
  • viの基本を学ぶ
  • Linuxの基本を学ぶ
  • HTTPの基本を学ぶ
  • Nginxを使ってサイトを立ち上げる
  • Git・Githubの使い方を学ぶ
  • Rubyの基本を理解して、実際にプログラムを書いてみる
  • SQLやデータベース設計を理解して、PostgreSQLの使い方を学ぶ
  • Sinatraを使って、アプリケーションを作成する
  • Ruby on Railsを使って、アプリケーションを作成する
  • テストの基本について学び、作成したRailsアプリケーションのテストを書く
  • アプリケーション設計の基本を学ぶ(RESTやUMLなど)
  • NginxとRailsアプリを連携させる
  • Capistranoを使ってRailsアプリをデプロイする(途中)

ラクティスの基本的な進め方は、紹介されている参考資料や公式のドキュメントを読み、実際に手を動かして、提出物を作成し、それに対してメンターの方から、ご指導をいただくという感じです。

デプロイのプラクティス以降もCI/CDやJavaScript、チーム開発に参加、自作アプリの開発などのプラクティスがあり、卒業まではもう少しかかりそうという感じです。

ただ、こうやって、列挙してみると、HTML・CSSを書いたことがない状態から、「結構遠くまできたなー」と、感慨深い気持ちがあります。

ラクティスの感想

第1の難関、CSSラクティス

最初に「大変だな」、「これ終わるのか😱」と思ったのが、CSSのプラクティスでした。指定された架空のWebサイトの画像をCSSで再現するという課題です。

課題に取り掛かったその日は、「これ、何から手を付ければいいんだ❓😱」と、3時間くらい考え込んでしまって手を動かすことができなかったのを覚えています💦

ただ、メンターの方が「大きいところ(全体のレイアウト)を最初に決めてから、小さいところ詰めていくように取り組んで行けば良いよ👍」と教えてくださったので、道が開けました。

CSSは書いていくと、すぐに目に見えて変わっていくので、とても楽しくなっていき、課題も無事OKをいただけました。

第2の難関、Rubyでlsコマンドを作成してみるという課題

Rubyを学ぶまで、LinuxやNginxなどのインフラ?関係の部分を勉強するのですが、それも私にとっては「何がなにやら・・・」、「果たしてRubyのプラクティスに辿り着くことができるのか💦」という状態でしたが、そこはなんとか、クリアして、「ここまで長かったけど、ようやくRubyを学べる〜😆」と喜びも束の間・・・

Rubyでlsコマンドを作成してみるという難関にぶち当たりました💦

それまで、プログラムというものを書いた経験がなかった私にとっては、再び「何から書いていけばいいんだ」状態になり、手を動かせなくなりました。

ただ、公式ドキュメントを繰り返し見たり、自分でlsコマンドの作成に必要なメソッドの挙動を実際に手を動かして確かめたりしているうちに、すこーしずつRubyの書き方が分かってきました。

また、メンターの方や、FJORD BOOT CAMP受講生の先輩方からアドバイスやヒントをいただき、なんとかクリアすることができました🎉

この課題は、私にとって本当に難しくて、クリアするまでに1ヶ月ほどかかってしまいました💦

しかし、その経験のおかげで、「プログラミングって分からなくて当たり前の世界なんだなー」と、分からないことに対する恐怖心みたいなものがなくなり、分からない中でももがき続けることの大切さを学びました。

そのため、これ以降のプラクティスでは「分からなくて当たり前。時間をかければいずれ分かるだろう」という落ち着いた気持ちで取り組むことができています。

これは別の言語ではなかろうか、と感じたRuby on Rails

Sinatraを使って簡単なメモアプリを作成してから、Railsでアプリを作成するというプラクティスの流れなのですが、scaffold一発で、Sinatraで作成したメモアプリが出来上がるというのを、目の当たりにして、すごい感動しましたが、すごいビビりました💦

「こんなことも、あんなこともRailsはできるんだ」と知っていく中で、その多機能さに圧倒され、Railsで書いているという感じではなく、Railsに書かされているという感じが強かったです。

あまり、Rubyで書いているという感じはなくて、「これはRubyではなく、他の言語なのではではないだろうか・・・💦」と困惑しておりました。

しかし、Railsアプリにポリモーフィック関連を使ってコメントをつけるという課題を通して、少しだけRailsに書かされている感から卒業することができ、Railsで書いているということを実感できるようになりました。

点と点が繋がった気がするデプロイのプラクティス

Rubyのプラクティスに入る前に、NginxやVPSなどのサーバー関係のことを学習するのですが、その時は、実はあまり理解したとは言えませんでした。

しかし、NginxとRailsアプリを連携させるという課題で、そのような知識が一気に繋がったという感じがあります。

Nginxはなぜ必要なのか、ssl対応の仕方、Nginxの設定ファイルに記述している内容の意味

などなど、自分で作成したRailsアプリをデプロイするということを通して、以前学習したことが繋がって、深く理解することができたという感じです。

このような点と点が繋がる瞬間がとても楽しいです😆

1000時間勉強してみて感じたこと

新しいことを学ぶことは楽しいことを再認識

大学、大学院を経験して、いつの間にか新しいことを学ぶことが億劫になっている自分がいました。 それは、これまで人間関係を相手にする分野だったため、新しいことを学んでもそれが生かされるとは限らない、自分のレベルアップが見えにくいということもあったと思います。

しかし、プログラミング学習では、新しいことを学んで自分がレベルアップしたら、すぐにそれがわかります。解決できなかった問題が解決できます。

その瞬間がとても楽しく、この1000時間を経て、新しいことを学ぶことが楽しいと思うようになりました。

一緒に勉強する人がいるということが大事

飽きっぽい自分がここまで継続することができたのは、FJORD BOOT CAMPという一緒に勉強する人がいる環境に身をおけたことも一因だと思います。 FJORD BOOT CAMPでは、学習した日に日報を書くというシステムがあり、他の人もその日報をみることができます。

これが非常に大きいと思っていて、他の人の日報を見ると、「自分も勉強しなきゃなー」とモチベーションが高まります。

また、自分がハマっている問題について、他の人に日報に解決方法やヒントがあったりするので、自分の問題解決にも役に立ちます。

そのような点で、オンラインの学習でも他の人と一緒に勉強している感があり、そのような環境があったからこそ、ここまで学習を継続できたのだと思います。

人と比べるのではなく、昨日の自分と比べることが大事

ただ、他の人たちのプラクティスの進捗を見ると、飲み込みが早い人は本当に早いので、そういう人たちを見ていると、そうはなれない自分に落ち込むこともあります。

そんな中、受講生のある方が、「上を見たらキリがないんですよ。だから、人と比べるのではなくて、比べるのは昨日の自分なんですよ」と教えて下さりました。

その言葉に、深く納得して、それからは他の人の進捗を見てもあまり落ち込むことはなくなりました。

むしろ、昨日できなかった課題がクリアできた瞬間にとても充実感を覚えるようになりました😆

来年の抱負

コツコツと自分のペースで学習を進める。そして、入りたい会社を決めて、就職するということが目標です💪

自分は今、目の前のプラクティスを進めることが楽しくて、どのような会社に入りたいのか、どのようなエンジニアになりたいのということが全く考えられいません。そのため、まずは色々な会社さんを知る、自分の価値観を知るということをやっていきたいと思います。

最後に

雰囲気的にFJORD BOOT CAMP卒業!!という感じになってしまった感が否めませんが、全然そんなことはなく、まだまだ卒業までの道のりは長いです💦

しかし、自分がなんとかここまで学習してこれたのは、FJORD BOOT CAMPのメンターの方々、受講生の皆さん、Rubyコミュニティで優しく教えてくださるエンジニアの方々のおかげだと思います。 ありがとうございました🙇‍♂️

そして、来年も引き続きよろしくお願いします🙇‍♂️