新卒エンジニア ゼロからはじめたプログラミング 6ヶ月の振り返り

## はじめに
※この記事は、[LTSグループ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ltsgroup) に参加しています。

はじめまして、senryu_k です。
Qiitaの記事を執筆するのは初めてなので、ちょっと緊張しています。

私は、2023年4月からエンジニアとして新社会人生活をスタートさせました。
といっても、大学では文化学を学んでおり、入社するまでプログラミング経験はゼロでした。
そこで、本記事では、プログラミングをはじめてからの半年間を振り返りたいと思います。

私のように社会人になってからプログラミングを始めた方や、始めようと思っている方のお役に立てたら嬉しいです。

## 目次
[1. 言語/教材](#1-言語/教材)
[2. 学んだこと](#2-学んだこと)
[3. 大変だったこと](#3-大変だったこと)
[4. 嬉しかったこと](#4-嬉しかったこと)

## 1. 言語/教材
### 入社前
#### [Progate](https://prog-8.com/)
「プログラミング = 黒い画面に映し出される謎の暗号」をイメージしていた私にとって、ゲーム感覚で取り組める Progate は、未知の領域へ踏み出すハードルをかなり低くしてくれました。
「にんじゃわんこ」や「ひつじ仙人」と画面に出力できたときは、ひとりで感動していましたね（笑）
しかし、ほとんどコピペで進めてしまうので、コードを理解できているという実感は持てず、言語の特徴や使いどころもよく分からないままでした。

#### Django
ネットで初心者におすすめと紹介されていた[『Djangoのツボとコツがゼッタイにわかる本』](https://www.amazon.co.jp/Django%E3%81%AE%E3%83%84%E3%83%9C%E3%81%A8%E3%82%B3%E3%83%84%E3%81%8C%E3%82%BC%E3%83%83%E3%82%BF%E3%82%A4%E3%81%AB%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC-%E7%AC%AC2%E7%89%88-%E5%A4%A7%E6%A9%8B%E4%BA%AE%E5%A4%AA/dp/4798066052/ref=asc_df_4798066052/?tag=jpgo-22&linkCode=df0&hvadid=553956383009&hvpos=&hvnetw=g&hvrand=18300310119487103828&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009303&hvtargid=pla-1599165165041&psc=1&mcid=66a2bcb255763eb78765e6b3ea438fcd&th=1&psc=1)を購入しました。
ところが、読めば読むほど「？」が大量に浮かび、2章の環境構築のあたりでそっと本を閉じることに…
本腰を入れて取り組まなかった自分が悪いのですが、ひとりでゼロから学ぶのは難しいですね。
そして、目下の卒論という巨大な壁、コロナ禍とともに終わっていく学生生活への焦燥感に追われているうちに、あっという間に入社式を迎えてしまったのでした…

### エンジニア研修（6〜7月）
4〜5月は、全職種共通の研修を受けていたので、プログラミングに触れる機会はほとんどありませんでした。
本記事のタイトルが「6ヶ月」となっているのも、この研修が始まった6月が本格的にプログラミングを始めたタイミングになるためです。

#### Python
HTML/CSSやSQLも学びましたが、研修の大部分はPythonでした。
教本として使用したのは、オライリー社の[『入門 Python 3』](https://www.oreilly.co.jp/books/9784873119328/)。
「入門」というタイトルを疑いたくなる分厚さと情報量！
研修の序盤、本の内容をすべて理解しなければと思ってかなり追い詰められました。初心者は「こんなこともできるんだな〜」くらいの感覚で読むのがちょうどよいかもしれません。

#### Django
教本は、[『Djangoのツボとコツがゼッタイにわかる本』](https://www.amazon.co.jp/Django%E3%81%AE%E3%83%84%E3%83%9C%E3%81%A8%E3%82%B3%E3%83%84%E3%81%8C%E3%82%BC%E3%83%83%E3%82%BF%E3%82%A4%E3%81%AB%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC-%E7%AC%AC2%E7%89%88-%E5%A4%A7%E6%A9%8B%E4%BA%AE%E5%A4%AA/dp/4798066052/ref=asc_df_4798066052/?tag=jpgo-22&linkCode=df0&hvadid=553956383009&hvpos=&hvnetw=g&hvrand=18300310119487103828&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009303&hvtargid=pla-1599165165041&psc=1&mcid=66a2bcb255763eb78765e6b3ea438fcd&th=1&psc=1)。
そう、入社前に挫折したあの本です！
今回は多少なりともPythonを学んだあと、さらに、講師の方や一緒に学ぶ同期がいたので、つまずきながらもなんとか最後までやりきることができました。

そして、研修ラストの2週間は、チームでDjangoを使ったwebアプリケーション開発を行いました。
技術リーダーやDBリーダーなどの役割分担があるなか、私はチームリーダーに挑戦させていただきました。
リーダーなのにコーディングできない、納期に間に合わないのではないかなど、ずっと不安で夜も眠れないほどでしたが、要件定義〜発表まで経験し、エンジニアに必要な能力がコーディングだけではないことを学びました。

### 配属後
#### Ruby
4ヶ月間の研修を経て、8月から社内開発チームに配属となりました。
開発言語のRuby（Ruby on Rails）は研修では扱っていなかったため、最初の1ヶ月間は Progate で学びながら、文言変更などのチケットを担当させていただきました。
ここで感じたのは、 __「Djangoをやっておいてよかった！」__ ということです。
Djangoの理解度も決して高くないですし、異なる言語のフレームワークですが、 __「Djangoでいう〇〇のことね」とイメージできるだけで、格段に理解スピードが速くなった__ と感じています。


#### HTML/CSS, Bootstrap
研修では1〜2日ほどしか学ぶ時間がなかったフロントエンドですが、新サービスの静的ページ作成PJで勉強させていただきました。

#### MySQL
研修のときはPythonに比べて構文がシンプルだなと思っていたのですが、いざデータ抽出するとなると、サブクエリやテーブル結合など、その複雑さに毎回頭がこんがらがります…


## 2. 学んだこと
### 調査力の大切さ
最初は、あまりに知らないことが多過ぎて、こんなに様々な言語や概念を覚えられない…と絶望的な気持ちになりました。
しかし、進歩の目覚ましいこの世界で、知識を記憶することに労力を割くのは最適解ではないと気がついてからは、「これなんだっけ？」となったときに、いかに早く的確な答えを見つけられるかを重視するようになりました。

思えば、持っている（記憶している）知識量ではなく、 __必要なときに必要な知識にアクセスする能力（調査力）__ や、点と点をつなげてものごとを考える力（応用力）が重要だということは、学生時代からよく言われていました。

突然動かなくなるDocker、画面を赤く染めるエラー画面、毎日が初めての問題の連続ですが、Qiitaをはじめとしたネット世界には、同じような問題に直面し、それを解決した先輩たちの知識が詰まっています。

調査力はまだまだ未熟ですが、配属直後に比べると、検索スピードや情報の精度が上がってきたことを感じつつあります。
そして、これからは情報の恩恵を受けるだけでなく、自分から情報発信する機会も増やしていけたらいいなと思っています。


### 先輩や同期に聞く、頼る
忙しい相手の時間を奪ってしまうのは申し訳ない、これくらい自分で何とかしなければ、こんなことで悩んでいる自分はなんてダメなんだろう…

大変ありがたいことに、質問や相談にいって邪険にされることなんてないのですが、もともと会話に苦手意識があることも相まって、ついついこんな思考に陥ってしまいます。

しかし、自分の仕事の前後には他の方の仕事があるという意識や、「先輩の時間を獲得するのが新人の仕事だ」という言葉をいただいたりするなかで、徐々に質問に対するハードルが下がっていきました。

その重要性を分かっていても、そう簡単にできないのが周囲を頼ることですが、結局自力でできずに迷惑をかける…なんてことにはならないようにしなければと思っています。
そして、誰かが困っているときに頼ってもらえる存在でありたいです。


## 3. 大変だったこと
### 分からない、貢献できていないという無力感
エンジニアの同期の中には、大学でプログラミングを学んでいた経験者もいれば、文系学部だけれど学外の活動でコーディング経験がある方、私のような未経験者まで様々です。

それまでの経験値によってスタート地点が違うのだから、同じようにできなくて当たり前とは思っていたものの、何が分からないかすら分かっていない自分と、同期を比較してしまう日々…
これまでの経験や学んできたことが全く役に立たたない、仕事なのに貢献するどころかチームの足を引っ張っているなどと、マイナス思考に陥ってしまうことがよくあります。

根本的な解決方法は、自分の能力や経験値を上げていくことだと思うので、転んでも立ち上がる力を失くさないようにしたいです！

### 言葉が分からない
これはエンジニアに限らず新人あるあるなのかもしれませんが、「みなさんが話しているのは日本語ですか？」と言いたくなるほど飛び交っている言葉が分からない！
研修中に「Git」を「ジット」、「Linux」を「ルナックス」とよんで恥ずかしい思いをしたこともありました…

最近は、「push」と聞いて物理的に押す行為よりGitが頭に浮かぶくらいには慣れてきましたが、まだまだ知らない言葉ばかり。
分からない言葉を検索すると、さらに分からない言葉が出てくるという無限ループには泣きたくなります。

また、自分の疑問や実装方針を言語化するときも、「これをこうして」や「ここがこうで」などと指示語のオンパレードになってしまうことが多いです。

言語化能力と技術力は繋がっていると思うので、語彙も増やしていきたいです。

### 目に見えない概念が多すぎる
「DockerでPC内に仮想のPCを用意して」や「インスタンスをつくって」など、エンジニアの仕事をしていると目に見えない概念にたくさん出会います。
実態のないものをイメージするのは難しく、こういう概念だからといわれても納得できない！

そんなときは、身近な何かに例えるのがいいようですね。
先輩が、オブジェクト思考をキャラクターやたい焼きに例えて解説してくださったのがとても分かりやすかったです！


## 4. 嬉しかったこと
### 貢献を実感できたこと
大変だったこととして無力感を上げましたが、反対に、誰かの役に立てたと感じられると非常に嬉しく、モチベーションが上がりました。

例えば、Slackの「いいね」や「ありがとう」といったスタンプ、抽出したデータが役に立ったいうコメントをいただいたりすると、多少なりとも貢献できているのだな、ここにいていいのだなと思うことができました。

これからもっと貢献できるように精進するとともに、私自身も感謝や賞賛の気持ちを積極的に伝えていきたいです。

### 仲間意識が芽生えたこと
社会人になるにあたっての大きな不安要素のひとつが、新しい人間関係を構築することでした。

しかし、4ヶ月の研修をともに乗り越えたことで、同期の間に仲間意識が芽生え、終業後や休日にご飯に行くまでに！
また、先輩方も親切な方ばかりで、親しみやすい雰囲気をつくってくださいます。

同期やチームの皆さんのことを好きだなと思って仕事ができるのは、とても幸せでありがたいことなので、私もチームのよい雰囲気に貢献できる存在でありたいです。


## おわりに
想定以上に長文になってしまいました。
最後まで読んでくださってありがとうございます。

拙いエッセイような記事で恐縮ですが、少しでも誰かのお役に立てていたら幸いです。

半年後や1年後にこの記事を読んだときに、今の自分を懐かしく思えるように、これからも頑張ります！