二年目エンジニアが伝授。新人プログラマが成長するための8個のTips

のやさん（ [@NibutaniA](https://qiita.com/NibutaniA) ）からバトンを受け取ってPOLのアドベントカレンダーを書かせていただきます、業務委託でエンジニアの田村です。
今日はクリスマスイブですね。今年はリモートワークなので、仕事終わりに一人悲しく街中のイルミネーションを見ることはなくなりそうです。リモートワーク万歳ですね。
そんな田村は社会人になってから二度目のクリスマスイブを迎えるのですが、最近ようやく仕事に慣れてきて、タスクに追われる一年目からタスクを制御できる二年目になりました。
今回はこの二年間、試行錯誤をしてきた中でやって良かったと思うものを以下の３つの観点から紹介したいと思います。

1. [仕事の進め方系](#仕事の進め方系)

2. [業務効率UP系](#業務効率UP系)

3. [モチベーション維持系](#モチベーション維持系)


**仕事に追われて辛い・時間通りにタスクが終わらない・何をしても空回りする**という新人エンジニアの方にぜひ見て欲しいです。

冒頭部分に関してはより内容をイメージしやすくするために自分がどういう人なのかを紹介します。
内容だけが知りたい方は上のリンクから自分が見たい観点に飛んでいただけると幸いです。
## どんなエンジニアか

まずは田村がどんなことをしてきたかを紹介します。

`ー　新人研修（HTML・CSS・Java）`

`ー　一つ目の案件(Vue[Nuxt]・Python[Django])`

`ー　今の案件（React・Java[Play])`

上記の通り、バックエンド・フロントエンド共にバランスよくコードを書いています。
また、二年目後半からは新人の教育係をする機会があり、先輩視点からも新人の動きを見ることができ、**客観的にも新人の行動**に触れることができました。



## どんな一年目だったか

二年目にしては様々な経験をさせてもらっている田村ですが、入りたての頃は何もできないポンコツでした。
社会人になるまでのコードの経験は、大学で**とりあえず動くPythonのコード**を書けるくらいの実力でした。ですが、自分はコードが書ける方だと思い込んで自信満々で社会人になりました。
そしてその心は直ぐにへし折られました。

`ー　振られたタスクは自分の詰めが甘く、時間通りに終わらない and バグが次から次へ出る`

`ー　コードは汚く、レビュー修正は嵐のよう`

`ー　調査タスクは1日かけて「何も成果を得られませんでした」状態`

のような失敗の連続。気持ち的にも余裕がなくなり、ただひたすら目先のタスクにこなすだけになってました。
そんな状態で成長することはほとんどなく、それに反比例するかの如く日に日に求められるものは大きくなり潰れかけ寸前でした。
この時、**最初は失敗してでも試行錯誤していき、長期的に成長できる基盤を作ればよかった**と後悔しております。
なのでこの記事を見ている新人エンジニアの方は、**目先のタスクに囚われず、常に先を見て考えること**を忘れないでください。

では、本編をどうぞ。

## 仕事の進め方系
社会人でまず詰まるのが仕事の進め方だと思います。
学生の頃は締め切りに向けていくらでも夜遅くまで作業をすることができましたが、社会人はそうとは限りません。**限られた時間で結果を出すこと**が求められることが多いです。
また、**相手の意図を汲み取り正確にタスクをこなす**必要もあります。
わからないことも多い中で、学生の時とは全然違う環境に慣れないことでしょう（田村はそうでした）
その中で以下の４つを意識をしてからは少しずつこの環境にも順応できるようになってきました。
### タスクは一直線に進める道筋を描いてクリアに

新人の頃、右も左も分からない田村は**「とりあえずやってみるか」**の精神で仕事を進めてました。
実はこれが一番やってはいけない進め方で、初動が早いので時間がかかりにくいと思いがちなのですが、徐々にボロが出てしまい大抵のタスクは遅れてしまいます。
なので事前に**タスクをクリアにしておく**のが大事です。
以下の順序でタスクを考えていくと良いでしょう。

`1. ゴールが何かを明確にする`
→タスクに対して**5W1H**がすぐ言えるようにしましょう。

`2. ゴールへの道筋が何かを考える`
→ゴールにたどり着くまでに何をしなくてはいけないかを考えていきます。ここでは**すぐに行動を起こせるレベル**まで細かくしましょう。

`3. 作った道筋を辿ったらゴールに着くか確認する`
→作ったものの逆算をしていきます。少しでも**ゴールまでの道のりで途切れている箇所**があればそこを埋めていきましょう。

`4. 道筋の中で不安に思うところは知ってる人に尋ねる`
→**少しでも不安要素がある**なら全部吐き出すようにしましょう。


### 上振れで信頼を勝ち取るよりも安定した信頼提供を

最初はとにかく成果を出したいって気持ちが出ちゃいますよね（田村は全開でした）
そこでよく考えてしまうのが

**「このタスクをいい感じに早く終わらせることができたらアピールになる」**

これはあまり良くない考え方です。
上司が新人に思っているのは、**遅くてもいいから確実にこなして欲しい・実力が知りたい**という気持ちの方が強く、早く終わらせることはあまり重要視してない方が多いと思います。
なので早く終わらせて評価をもらうよりも、**多少遅くても確実にタスクをこなせる人**の方が信頼度は上がります。

ポイントとしては、自分の最初に見積もった時間の1.2倍を提示するようにしましょう。
こうすることで、

`時間通り → 早くできたと報告できる`

`少し時間がかかった → 丁度良く見積もりできたと思ってもらえる`

となり、余程遅れない限りは良い印象を与えることができます。
また、心にもゆとりができ余計な焦りがなくなります。一石二鳥ですね。

### できないことをできると即答しないように

できないことをできないと言うのが苦手な新人の方も結構いると思います。
ここで大事なのは、タスクを振られた時に**「はい、できます」と二つ返事しないこと**です。
二つ返事すると、相手からは「これは自信を持ってやれるんだな」と認識されてしまいます。
なので、まずは多少考え込んでも今の自分ができるかどうかを考えるようにしましょう。

`ー　そのタスクをやる時間があるか？`

`ー　技術的にやり方は分かっているか？`

`ー　言われたタスクを理解できているか？`

`ー　etc...`

と様々な観点があると思います。それらが少しでも不安なら相手に伝えるようにしましょう。
ただ、できないと言ってしまうのは良くないので、

`ー　「○○のタスクがあるので、週末までかかってしまいますが、それでも良ければやります」`

`ー　「○○の実装が不安で時間かかってしまいそうですが、頑張ります」`

状況を説明した上でやる姿勢を見せるようにしましょう。
そうすることで相手も判断やアドバイスがしやすくなり仕事が進めやすくなります。

### 1日のスケジュールは30分単位で考え、終わりはハッキリと

仕事を始める前に一日のスケジュールを決めてから仕事に入ると、一日の流れが明確になり、だらだら仕事をせずに済むようになります。
また、タスクは30分ごとに区切り、毎時間ごとで確実に終わらせるというルールをつけましょう。
これをすることで様々なメリットを得られます。

`ー　毎時間タスクを終わらせたという達成感を常に味わえる`

`ー　タスクを30分に細かく区切ることでやることが明確になる`

`ー　人の集中力は45分程度で切れるので、集中力が切れる前にタスクが一区切りつく`

また、30分の内約は25分作業・5分休憩にすると良いです。
これは、仕事と休憩のメリハリがついたり各時間にバッファが設けられるので心にゆとりが出ます。

実際にスケジュールを作るときはスプレッドシートやマークダウンでまとめるのが良いです。
![スクリーンショット 2020-12-23 23.19.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547870/5a7431f2-5ea4-981f-c654-11adf7b3487e.png)



## 業務効率UP系

新人の頃、上司の仕事量を目の当たりにすると、「次元が違いすぎる…」と絶望することがありますよね。
そんな上司の方々は少しでも効率を上げるための試行錯誤を繰り返してます。

### キーボードの入力スピードはショートカットキー✖️タイピング力
ミーティングや考える時以外の業務のほとんどはパソコンでキーボードをカタカタすると思います。
なので**キーボードの入力スピードとタスクのスピードは比例する**と言っても過言ではないです。
ではキーボードの入力スピードはどうやったら早くなるのか？
タイトルでもある通りショートカットキーとタイピング力が全てです。
しかもこの二つはお互いに相乗効果があるので、どちらもマスターすれば格段に効率が上がるでしょう。
#### ショートカットキー

こちらはひたすら調べて、実際に使っていくのが良いでしょう。
OSのショートカットキーはもちろんのこと、自分がよく使ってるツールのショートカットキーも使えると良いですね。
田村が参考にしたサイトを貼るので参考にしてみてください。

Macコマンド：https://ledge.ai/mac_shortcut_matome/

スプレッドシート：https://www.innovation.co.jp/urumo/spreadsheet_shortcuts/

VSCode：https://qiita.com/naru0504/items/99495c4482cd158ddca8

#### タイピング
タイピングに関しては業務をしていくうちに自然と早くなる思いますが、正しく練習していけばより伸びると思うのでコツコツ毎日練習していくのが良いです。

`１. まずは両手を使うこと`

`2. 指のホームポジションを覚えること`

`3. キー配置を覚えること`

`4. キーボードを見ないで打てるようになること（タオルを被せると意識的に見なくなるので良いです）`

の順に進んでいくのが良いです。

また練習には[e-typingの基礎練習](https://www.e-typing.ne.jp/member/roma/practice/basic/)を使うと良いでしょう。
ある程度見ないで打てるようになったらe-typingの腕試しレベルチェックでどれくらいの実力か試してみましょう。
毎日一度はe-typingをするようになるとタイピングスピードがどんどん上がってのが実感できるので続けるようにするといいですね。



### 一度参考にしたサイト・コードは溜めておこう

新人のうちは様々なことを覚えます。とはいえ、コードやコマンドは使っててもなかなか覚えられないですよね？
そういう時に調べたものを何処かにまとめておかないと二度三度と同じことを調べることになります。
また、なんの検索ワードで調べたか忘れて、「前調べたサイトどうやって飛ぶんだっけ。モヤモヤする…」みたいなことも起こります。
なので、一度使用したサイトやコードは溜めておくようにしましょう。

#### サイト

ブックマークを使い、ひたすら溜めまくります。
フォルダは用途ごとにまとめると良いです。
また、サイト名はそのまま使わずに何の用途で調べたかを名前にすると良いでしょう。
他にも定期的に使うサイトもブックマークすると良いですね。
![スクリーンショット 2020-12-23 22.25.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547870/d9141ee7-016c-311d-c0d1-ef1664d0ea07.png)


#### HTML・CSS
こちらは一つのHTMLファイルにまとめると良いでしょう。
![スクリーンショット 2020-12-23 22.40.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547870/d67c5588-6bad-1ffe-0f5e-1503b3edf83c.png)


## モチベーション維持系

モチベーションがないと成長に繋がらないので維持させるのはとても大事なことです。
ですが突発的なやる気は起きますが、なかなかモチベーションを維持させるのは難しいですよね？
なのでモチベーション管理にも工夫が必要になってきます。

### ポジティブな1日の振り返りをしよう

振り返りをするのはモチベーションを維持させる上でとても大事なことです。
田村は以下の2点について毎日振り返るようにしています。

`ー　1日一つだけ成長した点を記録する`

`ー　寝る前に良かったところを最低一つ褒める`

簡潔に説明すると

#### 1日1つだけ成長した点を記録する
人がモチベーションを維持できなくなる原因に**成長を感じれなくなってしまった時**というのが挙げられます。
ただ淡々と仕事をしていると成長してないなと感じる時があります。
とはいえ、仕事をしていれば1日の中で何かしら知らなかったことを知る機会はあると思います（新人なら尚更）
どんな些細なことでも成長したこと・知ったことを毎日に記録すると良いでしょう。
後で見返してもこんなに成長したんだとなるのでとても良いです。

![スクリーンショット 2020-12-23 21.54.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547870/bcc484db-053c-e1ec-0ad9-372927d8ed2f.png)

上記は実際にチームで記録しているスクリーンショットになります。
一人ではなくチームでやると他の人が学んだ知見を得られたり自分の学んだことに補足をしてくれたりと更なる成長につながります。
こういうことを一緒に取り組んでくれるPOLのエンジニアチームは感謝しか出てこないですね。

#### 寝る前に良かったところを最低一つ褒める

新人の頃は失敗も多く、「自分なんか…」となりがちです。
なのでどんだけ失敗した日でもいいところを見つけて自分を褒めるようにしましょう。
また、寝る前に褒めると次の日にいい感じに切り替えれます（個人的には睡眠の質も上がったと思ってます）
なので寝る前に時間を使い些細なことでもいいので自分を褒めてみてください。5分くらい時間を作ればどんな日でも一つは見つかると思います。

### 定期的にエンジニアと話す機会を作ろう

一人で淡々と作業をしていると何のためにこの仕事したんだろう…と思ってしまうことがあります。
そんなときは同世代・先輩エンジニアと話してみると良いでしょう。いい刺激を受けて自然とモチベーションが上がってきます。
POLには1on1というその名の通り1対1でざっくばらんに話すという文化があります。
ちょっと話してみたいなという人と気軽に話せ場を設けることができるのはとてもいい環境だなと思います。
これを機に知り合いのエンジニアと話してみてはどうでしょうか？

## まとめ

新人が成長するための８つのTipsを観点ごとに紹介しました。いかがでしたか？
この記事が少しでも良かったと思ったらLGTMと他の日のアドベントカレンダーの記事を見ていただけると幸いです。
さて、明日は我らがエンジニアリングマネージャーの前野さん（ [@tmmmno](https://qiita.com/tmmmno) ）にバトンを渡します！
最終日どんないい記事を書いてくれるか期待大ですね＞ω＜/