プログラミングを始めて１年半の駆け出しエンジニアがやって良かったこと・やっておけば良かったと思ったこと

## はじめに
[TechCommit Advent Calendar 2020](https://qiita.com/advent-calendar/2020/tech-commit)の23日目の記事です。

こんにちは、辻[（@tj_tsk）](https://twitter.com/tj_tsk)です。
現在はTechCommitの開発をお手伝いさせてもらっており、日々色々なことを学ばせてもらっています。(感謝 :pray:)

今回の記事では、私がプログラミングを学習し始めてから約１年半経ったので、振り返りを兼ねて「やって良かったこと・早めにやっておけば良かったこと」をまとめていこうかなと思います。


# 技術の学習に関して
私は主にRailsを使った開発ができるように学習してきました。
学習する内容や進める上でやってきて良かったことなどを以下にまとめてみました。

## フレームワーク以外の勉強をすること
私はプログラミングを学習し始めた当初、Progate(HTML,CSS,Ruby,Rails) → Railsチュートリアルという順序で学習していました。この学習順序自体は問題なかったと思っているのですが、やはり初めはRailsの学習ばかりに目が行っていました。上記の手順でこう書くとこう動くということを大まかに理解した後は、以下の項目を早い段階で学習しておけば良かったと感じました。

#### HTTP
学習を始めた当初は、よく分からんけどform_withでformが作れて新しいデータが投稿できた! という状態でしたが、『[Webを支える技術 HTTP, URI, HTML, そしてREST](https://www.amazon.co.jp/Web%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-HTTP%EF%BC%8CURI%EF%BC%8CHTML%EF%BC%8C%E3%81%9D%E3%81%97%E3%81%A6REST-WEB-PRESS-plus-ebook/dp/B07JK7FZH2/)』を読んでHTTPについて学習すると、ブラウザの向こう側で起きていることが少しだけ分かるようになりました。↑の書籍は一部難しいので、最初に『[３分間HTTP＆メールプロトコル基礎講座](https://www.amazon.co.jp/3%E5%88%86%E9%96%93HTTP-%E3%83%A1%E3%83%BC%E3%83%AB%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7-%E7%B6%B2%E9%87%8E-%E8%A1%9B%E4%BA%8C/dp/4774140813/)』を読むのもアリだな思いました。

#### SQLの基本（基本的な構文・テーブル結合など）
RailsのようにORマッパーを使っているものでは、SQLを気にしなくてもなんとなく使えてしまっていたのですが、裏側でどういうSQLが走っているかを知っておくのは実務では必須です。SQLの学習は知識ゼロの状態から始めましたが、『[スッキリわかるSQL入門](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BSQL%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%83%89%E3%83%AA%E3%83%AB222%E5%95%8F%E4%BB%98%E3%81%8D%EF%BC%81-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8B%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1%E6%B8%85%E5%96%AC-ebook/dp/B07L3MX199)』がとてもわかりやすくて良かったです。

#### ネットワーク基礎
TCP/IPの概要くらいは早い段階で勉強しておいた方が良かったなと思いました。少なくとも『[３分間ネットワーク基礎講座](https://www.amazon.co.jp/%E6%94%B9%E8%A8%82%E6%96%B0%E7%89%88-3%E5%88%86%E9%96%93%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%9F%BA%E7%A4%8E%E8%AC%9B%E5%BA%A7-%E7%B6%B2%E9%87%8E-%E8%A1%9B%E4%BA%8C/dp/4774143731/)』くらいは読んでおいたら良かったかなと思います。

## コードレビューを受けること
コードレビューを受けてこられたのは良かったと感じています。
自分1人でコードを書いていると、自分のコードの何がダメなのか気付く機会が中々ありません。
私はTechCommitの開発やテクトレの実務トレーニングのコードレビューで色々な指摘をいただく中で学ぶことができましたが、恐らく1人で学習を進めていたら、ひたすら１人で書籍を読むことばかりしてしまっていたかもしれません。そういった意味で初学者がMENTAなどでレビューを受けるのは良いなと思いました。

## 開発環境を整えること
ディスプレイと椅子は本当に学習効率を変えるので、お金をかけた方が良いと感じました。
自分自身最初はそんな高いものは必要ないと思っていましたが、一度使って見るともう元の環境には戻れなくなりました。良いものを経験していないから、不自由さに気づいていなかっただけだったのです。

#### ディスプレイ
最初は13インチのmacのディスプレイ1枚で学習していましたが、[34インチ曲面ディスプレイ](https://www.amazon.co.jp/dp/B07XYVNHGH/)を買ってから生産性が大きく変わりました。VSCodeを開いた時、２ファイル開いても広々と比較できるのがとても良いです。

#### 椅子
また椅子に関しても、家で学習する時、初めは座椅子を使っていましたが[良いお値段のオフィスチェア](https://www.kagg.jp/office-chairs/uchida/158917/566573/)に買い換えました。良い椅子に変えると腰の痛みがなくなり、座っていられる時間が伸びてストレスが減ります。

## 聞く人がどう思うかを考えずに質問をすること

（この項目は、人からどう思われるか気にしてしまいがちな人にだけ当てはまる項目かもしれません。）

質問する時にどう思われるか気にしてしまうことってあると思うんですが、これはあんまり考えないようにした方が良いということはこの１年半で感じました。

「こんな質問をしたら馬鹿だと思われるかも」などと思ったとしても、考えないようにします。というか考えてしまうのは仕方ないので、馬鹿だと思われることは受け入れてしまうのがいいのかなと思っています。質問ができないと自身の成長の鈍化にも繋がります。自分がどう思われるのかを気にして成長できないくらいなら、どう思われてもいいので早く成長した方がマシ。ぐらいに考えておくと良いかもしれません。「質問できない→成長が遅くなる→辛い期間が長くなる」という負の連鎖が始まるので、聞いた方がいいです。しばらくの期間は馬鹿と思われるかもしれませんが、聞かなければその辛い期間が伸びるだけなので。

もちろん聞く前に自分で調べる・考えるのは大前提ですが、ある程度考えた上で分からないなら、分からない点を整理して聞くという選択が正解だと考えるようにしています。

# 健康に関して
技術のお勉強も大事ですが、体調やメンタルを安定させることも非常に重要です。メンタルが安定してないと学習効率も良くないですし、何よりせっかくの人生がハッピーに過ごせません。私は一時期プログラミングだけの生活を送っていた時期がありましたが、メンタル安定の重要性を感じて以下のような項目を生活に取り入れました。

## 筋トレ・ウォーキング
運動することは本当に大事です。
私は昨年10月から大学院を休学して一時期はプログラミングだけの生活を送っていました。一日中PCの前に向き合ったり、長時間進まなくてハマってしまったりすると自律神経が乱れます。（メンタルが悪化します）

これを解決するのが筋肉です。
私には筋トレを始めたことで精神的に打たれ強くなった感覚があります。学習をしていて意味不明な事象に出くわした時に感じていたウッという気持ちも軽減されるようになりました。筋肉を鍛えることはメンタルの改善に繋がるのです。

また筋トレでなくても一日数十分ウォーキングするだけでも結構メンタル改善に効果があります。ウォーキングしている時間は考え事をする時間にも使えるので一石二鳥に感じています。

## お風呂
運動ももちろんですが、お風呂（湯）にしっかり入ることはメンタルを安定させる上で非常に重要です。自律神経が整います。
元々私はシャワーのみ人間で、ここ数年お湯につかることをしていませんでした。
しかし、ジムに通い始めてからジム付属の温泉を利用するようになり、今では毎日お風呂に行きたくて仕方ありません。温泉につかるためにジムに行くまであります。
家に籠もってPCの画面ばかり見ていると自律神経が乱れる（メンタルの悪化に繋がる）ので、たまにはお湯につかるのがオススメです。

# おわりに

結局私が書きたいことを書くだけの記事になっちゃいましたが、参考になる部分があれば幸いです。