【新卒エンジニア必見】新卒2年目エンジニアが新卒の時に苦労したことと改善方法

どうもこんにちは。

今回は、新卒時代につまづいたこと、苦労したこと、逆に得たことを紹介します。

# 自分の業務について

１年間を通して、行なってきた自分の業務は以下のようになっています。（興味なければ無視してください。）

## 入社0ヶ月〜3ヶ月

2023年3月以前からアルバイトとして業務を行なっていたので、社内システムの内容、コードについては理解している段階で入社したので、技術的な研修などはなしでした。

- Railsアプリ不具合修正、機能改善
- 試験仕様書の作成
- 試験の実施
- Rubocop、RSpecの実装

この時はRailsを本格的に触り始めて半年程度であったため、Railsのコーディングスキルは未熟でした。
**不具合修正、機能改善のための調査にかなりの時間を要していました。**

RailsのRSpecテストの実装では**技術的な未熟さがかなり露呈していました。**（今も苦手です。）

**試験仕様書の作成、試験の実施は、アプリの仕組みを理解するにはとても必要な業務だと実感しました。**

## 入社4ヶ月〜6ヶ月

入社して4ヶ月経った段階でそこそこスラスラとコードを読めるようにはなってきました。
この時点での業務は以下のような感じです。

- Railsアプリ不具合修正、機能改善
- 相互コードレビュー
- 試験仕様書の作成
- 試験の実施

業務内容としては大きくは変わっていないですが、熟練開発者の方から**コードレビューをいただきながらコーディング作業を行うことができた**のは、非常にプラスになりました。

また、設計と実装後のアプリに差異がないかなどの確認を頻繁に行なっていたため、**コミュニケーションをとりながら開発を進めることを身につけることができました。**

## 入社7ヶ月〜9ヶ月

入社して半年が経ち、他の業務も与えられるようになりました。

- Railsアプリ不具合修正、機能改善
- 相互コードレビュー
- 試験仕様書の作成
- 試験の実施
- Amazon Bedrockを使用して感情分析機能の作成
- ドキュメント整備

今まで行なってきた業務は、今までの半分くらいのボリュームになりましたが、操作マニュアルといったドキュメント整備に一日の業務の半分を費やすことも増えてきました。

この時期から、「**今日、自分は何をする必要があるのか**」というタスク管理が必須になってきました。俗に言う**タスク管理**です。

自分は、**Slackの「canvas」** という機能を使用してタスク管理をしています。
（様々なタスク管理ツールがありますが、自分は一番使用するアプリケーションの中で収めたかったのでcanvasを使用しています。）
canvasを使用して、プロジェクトごとに「**今何をやっているのか**」を一覧化しました。

また、ここで初めて生成AIを使用した機能を実装したことで、「**AI楽しい〜！**」と思うようになりました。

## 入社10ヶ月〜12ヶ月

2024年にもなって、もうすぐ２年目を迎えるという時期です。この時期の業務は以下のような感じです。

- Railsアプリ不具合修正、機能改善
- 相互コードレビュー
- 試験仕様書の作成
- 試験の実施
- SageMakerを使用してファインチューニング
- ドキュメント整備

今までやってきた業務に加えて、SageMakerを使用したファインチューニングを行うようになったりして、**自分の未経験領域の業務に取り組んでいます。**

# 何に苦労したのか

苦労したものをリスト化してみました。

| 苦労したこと | 理由 |
| --- | --- |
| Railsのコーディング | 技術的に未熟なため、1つの課題をこなすのに工数がかかる |
| 不具合調査 | どこに何があるのかわかっていないため、調査に時間がかかる |
| タスク管理 | 業務量が増えてきた時に、管理するのが慣れるまで大変 |
| スキル,知識の習得 | コードレビューをしていただいていた時期以外は独学 |
| コミュニケーション | 自分の考えていることをうまく伝えるのが苦手すぎ... |
| 体力 | 大学生の時と比べて、8,9時間ぶっ通しで頭を回転させているのでやっぱり疲れる |

大きく分けてこの6つかなぁと思います。

# どのように解決した？

ではこれらをどのように解決したか紹介します。

| 苦労したこと | 解決法 |
| --- | --- |
| Railsのコーディング | ChatGPTの活用 |
| 不具合調査 | ChatGPTの活用 |
| タスク管理 | Slackのcanvas, Chrome拡張機能の活用 |
| スキル,知識の習得 | 興味のあることは積極的に動画（YouTube）でインプット |
| コミュニケーション | 伝えるべき内容を「問題→解決策→その理由→今後の行動」の流れで考える |
| 体力 | 適度な運動, プロテインで栄養補給 |

## ChatGPTの活用法

ChatGPTには、具体的なコードよりもざっくりとしたコーディングの流れを考えてもらっています。
不具合調査に関しても、エラーメッセージから何のエラーか読み取れない時に、ChatGPTに聞くと「〇〇の時によく見られるエラーです」と答えてくれます。

全てをAIに任せると自分の方向性を見失ってしまうので、「0→1思考」でChatCPT、「1→10思考」で自分の脳みそを使うようにしています。

また、最近見つけたものですが、「GPTs」というストアでChatGPTのカスタムモデルを使用することができます。
自分は、「**Ruby On Rails（Ruby on Rails Mentor）**」と「**AWS Cloud Architect & developer（Expert in AWS Cloud）**」というモデルを愛用しています。

![スクリーンショット 2024-04-02 23.29.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711491/fea66909-7f5f-26a0-ae69-5018b429c7a4.png)

あとは、どれだけプロンプトを正しく認識してもらうかだと思います。

## タスク管理

自分はあまり凝ったタスク管理をしたくないので、以下のようにMarkdown形式でリストを作成しています。

以下はサンプルです。実際の業務内容とはかなり異なります。

```markdown
開発外
- AWS Summit 2024 登録開始されているか確認

〇〇マニュアル作業
- X機能 管理用マニュアル
    - レビュー依頼中
- X機能 ユーザ用マニュアル
    - 修正作業中
- 4/4 17:00~ レビュー会実施予定

〇〇開発
- ソースコード理解
    - Y機能部分から再開
- AI機能検討
    - 検討資料作成 4/4まで

△△開発
- 感情ステータス表示機能
    - SageMakerでサンプル作成
    - コスト計算
    - サンプルトレーニング結果の資料作成
- 調査
    - ElasticBeanstalkのプラットフォームバージョンアップの調査
    - バージョンアップ締切は2024/8
- AmazonConnect
    - 毎月1日に通話履歴集計
- Aチーム要望
    - 要望箇所のソースコード確認
        - 工数見積もり
    - Z機能の不具合修正
        - 試験仕様書作成
        - 試験実施

□□開発
- ElasticBeanstalkのプラットフォームバージョンアップの調査
    - バージョンアップ締切は2024/8
```

また、タスク管理とは異なりますが、ブラウザのタブをグループ分けできる「**Acid Tabs**」というChrome拡張機能はおすすめです。大量にタブを開いてしまってもすぐ見つけることができ、使っていないタブは収納することができます。

## スキル,知識の習得

自分は本を読んだり、文字を見るのが苦手なので、基本的に映像と音声をインプットするようにしています。

## コミュニケーション

伝えるべき内容を「問題→解決策→その理由→今後の行動、わからなければ相談」の流れで考えることは必ず意識しています。
うまくいかない時もあるので、これはまだ改善の余地ありです。

業務中に確認することが出てきた場合には、5分以内にSlackで確認、質問するようにしています。（タスクとして「後で聞かなきゃ」ってやるのは苦手なので）
逆に、確認依頼などが来た場合には打ち合わせ中/お昼ご飯中でなければ、即返信するようにしています。

## 体力

プロテイン！おすすめは低脂肪乳で飲むこと。

# 結局大切なことは？

ズラズラ文字を並べましたが、自分が取り組んで良かったなと思うものは以下です。

- **コミュニケーション**
    - 自分は何を一番最初に伝えるべきなのか、相手にはどのように伝えるとわかりやすいかを考える
    - 「問題→解決策→その理由→今後の行動、わからなければ相談」を徹底
    - 相談、質問、確認ほど5分以内に連絡する
- **タスク管理**
    - 自分にあったタスク管理方法を見つけてください
- **AIの活用**
    - 自分の思考整理や開発順番の確認など、考える上での土台を作るのにAIをフル活用した方が良いのかなと思います
    - 全部をAIの任せるのは方向性がズレるし、自分のスキルが向上しないです

取り組んでもまだまだ足りない箇所があるためさらに頑張ります。

以上