ペアプロで掴んだ成長の鍵：新人エンジニアが壁を突破するために実践した5つのステップ

::: note info
この記事は[リンクアンドモチベーション AdventCalendar2024](https://qiita.com/advent-calendar/2024/lmi)の 7日目の記事です
::: 

# この記事でお伝えしたいこと

この記事では、新人エンジニアだった私が6〜9月の間に自分対比で過去一番成長できた理由を整理し、何を行ったかを紹介します。

以下のステップを踏むことで、成長を大きく加速させました。

	1.	エンジニアとして、会話ができるようになった
	2.	タスクを進めていく観点を知った
	3.	ちょっとコードを読めるようになった
	4.	ちょっとコードが書けるようになった
	5.	自己肯定感 × 自己効力感が高まってきた

これらのステップを踏み、3Q序盤の課題からどのように克服したのか具体的に書いています。
成長や育成に悩んでいる方に少しでも参考になれば幸いです！

# ご挨拶

こんにちは、中島と申します。

現在は、ストレッチクラウドの開発業務に携わっております。
配属されてから一年が経過し、実務経験1年と言える状態になりました。
機能の設計、APIの実装、QA設計、データ出し等々、横断的にタスクにあたっています。
自分ひとりでやれることが増え、楽しみながら経験を積んでいる最中です。

そして、去年のAdventCalendarも記事を書いたのですが、その記事がこちらです！
先輩方からさまざまなタスクをいただき、多くの経験を積んでいく中で、
「先輩、ちょっと何言っているか分からない…」とコミュニケーションで躓いていました

https://qiita.com/nakajima-yuusuke/items/5cde1fac938557994c98

実際に自分のコミュニケーションで悩んでいる方や、後輩とのコミュニケーションで悩んでいる方がいらっしゃいましたら、ぜひ読んでいただけると幸いです！


そして、本記事では、先Q（6〜9月）が
**自分対比で過去一番成長できたので、どういうステップを踏んだのか**
そこを言語化したいと思います！


# 3Q序盤の状態
3Q序盤では以下の壁にぶつかり、自分は伸び悩んでいました。

- **事実と解釈を分けていない**
  - 「多分」や「なんとなく」が発言として多い
  - 記憶頼り、解釈に解釈を重ねる綱渡り

=> 不確実なまま進めたタスクが完了間近で手戻りになってしまい、玉突きで他タスクに影響が出てしまった
=> 曖昧な言葉の使い方が原因で仕様理解を間違え、納期に遅れてしまった


- **観点がない**
  - 動作確認するかしないかが曖昧だった
  - 完了条件が理解できていない など

=> 動作確認をしないままレビューを投げてしまい、レビュワー任せになってしまっていた
=> 完了条件を理解せず、ズレた実装をしてしまって手戻りが起きてしまった

そして、この2点以外も**きっと何か課題があるんだろうけど、何が課題はわからない。**


ふわふわと仕事している感じで、学べているはずなんだけど繋がっている気がしない。
これでは先輩方にも申し訳ないし、悔しい。
これでは、積み上がるものも積み上がりません。

ここから過去一番成長できたステップについて書いていきます！

# ステップ 1. エンジニアとして、会話ができるようになった

認識のすり合わせができていない、そもそもできない状態からスタートでした。
言葉を正しく使えていなかったので、ペアプロの時間をがっつり使いました。

**3Q序盤**

僕
「ここがこうなっていて、多分こうで、〇〇が変わるからです！」

先輩
「今の言葉ってどういう意味・どういう意図で使ってる？変わるって？こういう意味？」

僕
「そうです！それが言いたかったんです！」

先輩
「ああ、じゃあこっちの方が適切かも」

僕
「そうなんですね！ありがとうございます！」

これを何度も繰り返しました。

**3Q終盤**
先輩
「いやあ、初めのうちは大変だったね。でもここに時間をかけられてよかったと思うよ」
**「言葉をすり合わせて、正しく使うことで頭に正しくマッピングされていくからね」**

僕
「根気強く教えて続けていただき、ありがとうございます…！」

こうして認識をすり合わせていくことで、少しずつ土台の土台が出来上がっていきました。

# ステップ 2.タスクを進めていく観点を知った
タスクを進めていく観点がありませんでした。
「先輩がこうやってタスクを進めてそうだし、真似して進めてみる」
でもそれでは、やはり上手くいきませんでした。

そこで、エンジニアの先輩方に協力していただき、自分がタスクを進めていくにあたって、足りていない観点はどこか を洗い出していただきました。

**タスクを進める観点**
- 目的
- 完了条件
- スコープ
- 手順
- 動作確認
- ポイント数（かける時間）

というようにまとまりました。
ちなみに、この観点で「手順」と「動作確認」をあえて分けて書いているのは、動作確認を忘れないためです。

これらの観点に沿って、タスクを分解し、あらかじめレビューしていただきました。
すると、理解した上で進められたり、手戻りが減ったりして、タスクが進むようになってきました。

先輩からも
「タスクを細かく分解できて、手戻りが減ったね」と言われ、自分の成長を実感しました！

# ステップ 3.ちょっとコードを読めるようになった
簡単なコードは読める。
でも、先輩の書く複雑なコードはなんとなくで、正確に読めていませんでした。

僕
**「この複数行のコードがセットで、この数行を書くと、こういうデータが返ってくるのか。
（中身について具体的にはわからない）。じゃあここ変えるといけそう！」**


これでは再現性もないですし、不確実性も高いですね。
これを解決したのが、**「コードリーディング」** です！

- 書籍だと自分が学んでいない言語で書かれているものも多いし、なんかイメージ湧きにくいかも
- イメージはついたけど、具体的にはどういうコードがいいコードなのかわからない

だったら直接プロダクトコードを読めばいいよね
ということでAPIを50本分読んでみました！

余談ですが、意外と知られていないツールで[CodeTour](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour)がおすすめです！
コードベースにナビゲーションを追加できるVSCodeの拡張機能です。初学者がコードの読み解きを進めるのに特に役立ちます！

また、ステップ2で挙げたように、タスクを進める観点が身についたことで、「ここまでがAPIの単位なのか」、「こういうコードで手順を書いていくのか」など、コードリーディングにも集中できるようになりました！

これで「綺麗なコードや、正しいコードとは何か」というサンプルがたくさんインプットできました。

インプットが進み、知識が増えていきました。

# ステップ 4.ちょっとコードを書けるようになった

ちょっとコードが読めるようになった後の話です。

先輩
「じゃあ、コンソールでこのメソッドが正しそうか試してみようか」

自分
「やってみます（一旦、手を動かそう）」

〜 5分後 〜

自分
「すみません、書けません…！
頭がごちゃごちゃしてしまって、どうやって書いたらいいのかぐるぐるします」

先輩
「あれだけコードが読めるけど書けないのは、コードを書く経験が少ないからだろうね」


何も見ないとコードが書けない。
これを解決したのが、**「[Paiza](https://paiza.jp/)」** です！
Paizaは、環境設定なしで、コードを書けます！また、細かいトピックスに分かれて学習ができたり、問題が出題されて自分の力が測れたりします。

とにかく0→1で書く経験を積まないと書けるようにはならない！
ということで、ペアプロしていただきながら、0→1でコードを書いていきました。

- どういうコードを書くか考えること（P）
- 実際にコードを書く・動作確認すること（D）
- 先輩に見てもらって気になった点をFBしてもらうこと（C）
- 学んで次は同じミスをしないこと（A）

このPDCAサイクルを回すことで飛躍的に書くことができるようになりました！
最初はDランクでも「どう書こう？」となっていましたが、PaizaのBランクまではすぐに行けました！

こうして、タスクを進められたり、インプットとアウトプットが回るようになりました。

# ステップ 5.自己肯定感 × 自己効力感が高まってきた
コードリーディングや、Paizaに触れていなかったタイミングでは

なんとか頑張ってはいるものの、これといった成果は出せず、コードを実装できている感もなく、悔しい。けど、どうやって突破しよう。なんとなく不安でした。

- 自分はタスクが上手く進められていない
- 先輩方の時間を貰って成長しないといけないのに成長できていない
- なかなかエンジニアのこと、好きになれないけど、仕事だし頑張るか

焦りとか申し訳なさとか、いろいろなものを感じていました。
それを解決したのは、**「自己肯定感」** と **「自己効力感」** でした。

自己肯定感：自分もちゃんとチームにいる意味がある！
自己効力感：ここまでできた自分なら、きっとこれからもやれる！

コードを読み書きする経験が増え、少しずつ「できる」、「楽しい」と感じ始めました。

そうした中で行われた社内イベントの**ハッカソン**のBE領域にて
自分が大きく貢献できたことも弾みとなり、勢いに乗ってQ末まで走り切れました！

# 3Q終盤の状態 -序盤と比較して-
まとめますと
このQで、「点」だった知識が繋がって「線」になったり、
「知っている」から「分かる」・「できる」になったりしました。

自分のできることが増えたことで、自己肯定感・自己効力感が得られて
=> 楽しい！もっと頑張ろう！
==> 頑張った結果が出て、また次の自己肯定感・自己効力感が得られる…

**できることを増やし続けていくことが大切** だなと学びました。

そして、仕事って楽しい。プログラミングって楽しい。
自分の実力より少し難しいタスクをやり切れた時の達成感は半端ないです


# そして、現在（2024年12月）
現在は、冒頭にも書いたように、自分ひとりでやれることが増え、楽しみながら経験を積んでいます！領域や難度によっては一人日で進められることも増えてきています。

学びの土台が出来上がったことによって、一つのタスクから学べることも多く、**それぞれの知識を正しくマッピングし、繋げながら次に進めるようになりました。**

また、**自分がどうやったらうまくいくかというパターンを知れたので、メンタルも安定する**ようになりました！



# 終わりに
ここまでの成長ステップを実践する際に**ペアプロをしてくださった先輩の存在がものすごく大きかったです。**
上記に関する課題を発見していただき、ひとつずつのソリューションがワークするようお手伝いしていただきました。本当にありがとうございます。

きっと近いうちに大きな壁が立ち塞がると思いますが、それでもここで学べたことを胸に、自ら道を開き、チャンスを掴み取って自分に関わるすべての人に恩返しできるよう精進します！

皆さんの成長を支えてくれた出来事や、忘れられない先輩の言葉はありますか？ぜひ振り返ってみてください！

ここまで読んでいただき、ありがとうございました！