新人エンジニアが知っておくべき業務の進め方とポイント

# はじめに

新人エンジニアの皆さんへ

私はエンジニア歴8年で、その中で管理職も経験してきました

エンジニアとしてのキャリアをスタートするにあたり、
業務の進め方やポイントについての情報収集はとても重要です

そこで、私の経験をもとに、新人エンジニアが必ず押さえておくべきポイントをまとめてみました

以下の記事をChatGPTを使って書き直したものになります


https://qiita.com/xy2e45/items/f1f93e1d30d174d69b5b

# 1. マインド

ここでは開発に必要となるマインドを身につけるためのポイントを紹介します
自己研鑽と完璧主義を適度にバランス良く取り入れることが大切です


## 1-1. 自己研鑽を必ずする
タスク（機能)の開発が完了したら、
次のタスクに取りかかる前に、自己研鑽の時間を必ず確保しましょう

### 自己研鑽の方法は以下の通りです

```:自己研鑽の方法
① 完了したタスクについて、「できたこと」と「できなかったこと」を3つ以上挙げます。
② 挙げた内容について、2段階以上深堀りして精査します
```


```:深掘りの例
例：工数がオーバーしてしまった場合
①「なぜ工数がオーバーしてしまったのか」という質問を立てます
② 回答として、「工数を意識して作業していなかったから」という理由を挙げます
③ 更に深堀りするため、「どうしたら工数を意識できるようになるか」という質問を立てます
④ 回答として、「作業工数がわかるように、作業時にアラームを設定する」というアイデアを挙げます
```

この方法で自己研鑽を習慣化することで、失敗を繰り返すことなく、自己成長につながるでしょう

成功事例については他の領域でも活用できる場合があるため、
自分ができたことについても自己研鑽することをお勧めします

次のタスクに向けたスキルアップに繋がるように、
自己研鑽した内容を意識して次回以降のタスクに取り入れていきましょう

自己研鑽した内容が自然にできない間は、目につくところにまとめておくと良いでしょう

失敗すること自体は問題ではありませんが、
自己研鑽して再発防止策を策定し、次回以降同じ失敗をしないようにしましょう

## 1-2. 100%の完成度にこだわりすぎない

完璧を目指しすぎることは避けましょう

上司や先輩エンジニアも同じように思考錯誤しています

60%〜80%程度でも、早めに上司やチームメンバーとコミュニケーションをとることが重要です
そうすることで、より良いアドバイスをもらったり、共同作業をスムーズに進めることができます

# 2. コミュニケーション

ここではチーム開発に必要なコミュニケーションスキルを紹介します

## 2-1. 報連相の目的を意識する

プロジェクトを進める上で、上司への報告や連絡、相談は不可欠です。

上司とコミュニケーションする際には、
「報告・連絡・相談」のどれに自分の行動が該当するか確認して、目的を意識することが重要です

```:目的
報告:認識合わせ
連絡:情報共有
相談:問題解決
```

目的を明確にしてコミュニケーションを行うことで、
円滑なプロジェクト進行が可能になります

## 2-2. 質問の仕方を工夫する

質問は大切なことですが、以下の点に注意して質問しましょう

1. 自分で調べた内容を明示する
質問する前には、自分で調べた内容をまとめて報告し、「これはこう思っているのですが、どうでしょうか？」のように、1人称で質問することが望ましいです
ただし、解決できない問題がある場合は、その旨を伝えることも大切です


2. 調査過程を共有する
質問する前に、自分で調査した内容について上司に報告しましょう
「こう調査したけど、これで正しいでしょうか？」というように、調査過程を共有することで、上司から的確なアドバイスを得ることができます


3. 相手の時間を考慮する
相手が忙しい場合は、返答に時間がかかることもあります
相手のスケジュールを確認し、適切なタイミングで質問するようにしましょう
また、質問する際には相手が必要最低限の情報を理解できるように簡潔にまとめることが重要です

## 2-3. アラートは爆速で
間に合わないとわかったタイミングで、速やかにアラートを上げることが大切です
例えば、遅れが予想される場合は、その旨を関係者に報告するとともに、対策を提案することで、その後のスケジュール調整を円滑に進めることができます

```:相談が早い場合に上司がとれる手段 
　・増員
　・アサインの変更
　・リスケ
```

```:相談が遅い場合に上司がとれる手段
　・増員
```

また、遅れが発生した場合には、遅れた原因や影響範囲などを明確に把握し、
上司や関係者に正確に報告することが重要です

遅れによって発生するトラブルを最小限に抑え、
円滑な業務進行を図るためにも、アラートは爆速で！

# 3. 開発作業の進め方

開発作業を進める上で、工程を明確にすることはとても重要です
ここでは、開発作業を効率的に進めるための基本的な手順を説明します

## 3-1. 機能を因数分解する

プログラムを開発する際、機能を小さく分割することで、扱いやすくなります
因数分解を行うことで、開発タスクを小さく分割し、個々のタスクの開発を行いやすくします

因数分解は以下のようなイメージでおこないます

```:因数分解のイメージ
機能A
 → 機能a
  → 機能a-1
   → 関数Xで実装可能
  → 機能a-2の技術調査・開発
 → 機能bの開発
```

## 3-2. 予定工数の割り振り
過去の経験を基にして、予定工数を算出しましょう

未経験の作業や知識不足のある内容については、
スケジュール上の工数で完了すると想定した場合の目安工数を割り振ります

ただし、この目安は作業前のスケジュールの目安であり、
実際の作業中には変動が生じる可能性があることを考慮して割り振りましょう

以下は、工数割り振りの例です

```:工数割り振り (24h作業の場合) 
機能A
  → 機能a
　　   →　機能a-1
　　　    →　関数X: 4h: 実装方法が明確なため
　　   →　機能a-2
　　　    →　機能a-2の実装方法に関する調査・実装: 12h = 24h - 8h - 4h
  → 機能b: 8h ※過去の類似の開発工数から算出
```

## 3-3. 知識レベルが足りていない内容からの対応
知識レベルが足りていない内容については、実施に多くの時間がかかる可能性があります

それらを後回しにすると、リカバリーがきかなくなる可能性が高まります
そのため、自分自身がどの程度理解しているか、または残り作業時間を明確にしておくことで、
作業中に「ここは余裕があるから、この技術を深堀しよう」とか、「ちょっと遅れ気味だから、ここはよく理解できていないけど、とりあえず進めておこう」といった具合に、
自身の知識習得にも配慮しながら作業を進めることができます

工数が不明確なものや知識レベルが足りていないものから順に、
対応していくことを心がけましょう。

## 3-4. 全体進捗を意識する
プロジェクト全体の進捗を意識しましょう

特に新人の場合、割り振った工数に対して進捗が遅れることが多いでしょう
そのような場合には、他の改修箇所でその遅れを吸収できるかどうかを確認しながら作業を進めましょう

もし他の箇所で吸収できない場合には、すぐに上司に報告しましょう
報告によって、全体進捗に対する修正案を立てることができます


また、上司には自分が工数割り振りの際に抱えていた課題や疑問点などを報告することで、
今後の改善につながる可能性があります

プロジェクト全体の進捗を意識することで、自分が担当する改修箇所だけでなく、
プロジェクト全体が円滑に進むようにサポートすることができます

# 4. プログラム内での一貫性について

プログラムを開発する上で、一貫性のあるコーディングは非常に重要です

一貫性がないと、コードの保守や修正が非常に困難になります

以下内容に注意しながら開発していきましょう

1. 最低でも1つのタスク（機能）を改修する際には、一貫性のあるコーディングを心がけましょう
2. 社内で定められたコーディングルールには必ず従い、ルールを守ってコーディングを行いましょう
3. 自分が独自に考え出したコーディングルールがあれば、社内のルールに追加することを積極的に検討しましょう

# さいごに

この文章での内容が、新人エンジニアの方々にとって少しでも役に立てれば幸いです

エンジニアには日々学びがありますが、
その中でもプロジェクトにおいては、計画的かつ柔軟に対応することが重要です
これらのスキルを磨きながら、より良いエンジニアライフを送ってください