[新人エンジニア応援]新人エンジニアに届け。会社における、成長する生き方！

# はじめに
まずは、新人エンジニアの皆様、就職おめでとうございます！
これからは、新社会人としてドキドキワクワク、それに反して不安な気持ち、、、いろんな気持ちを抱えていると思いますが、`どのような考え方や行動でより成長出来るのかを知っていると知っていないでは大きな差を生みます`ので、ここで心がけを学んでおきましょう！！

# 会社で大事なこと
自分が考える最も会社で重要となることが3つあります。

- 質問力
- コミュニケーション力
- 学習方法

上記の3つに重きを置いて解説していきます！
正直、この3つを意識するだけで、周りとかなり差をつけることが出来ます。。！

## 「質問力」について
最初は本当に分からないことだらけです。。(かという私もわからないことだらけでした。。)
ただ単に「分かりません！」といった適当な質問をしてませんか？
こういった質問は言わなくてもわかると思いますが、`NG`です。

### なぜ質問力が必要か？
質問力を身に着けることは、エンジニアの成長速度を恐ろしく加速させます。
質問力を磨くことで「プログラマーらしい論理的思考」が出来るようになります。
良い質問する際には、必ず情報整理が必要となるのですが、`相手にわかりやすく伝えようと整理すると、自分の中での問題に対する理解も上がり、質問を考えているうちに解決法が思い付く`といったこともあります(笑)

### 質問テンプレート
以下のテンプレートに沿って質問すれば、先輩も答えやすい質問が可能です！

```ruby
①まずは最も聞きたいこと、解決したいことを簡潔に述べる。

②現状発生している問題について説明する。
# 問題の詳細、エラーメッセージ、スクリーンショットなどがあると良い

③関連するソースコード(全ソースコード)を添付する。
# ソースコードはスクリーンショットよりも文字にした方がコピーなどしやすく親切かも？

④問題解決するために試したことを説明する。
# 参考サイトや、試した際のソースコードなど

⑤問題に対しての自分なりの見解を伝える
# デバッグ結果、検索結果、問題の原因予想

⑥相手の時間を奪って質問するので、礼儀を忘れない。
# 「お忙しいところ申し訳無いですがよろしくお願いします」←このような一言があれば印象◎
```

#### 質問例文
テンプレートに沿って例文を考えてみました。

```ruby

①メッセージ投稿機能を実装しているのですが、メッセージ投稿の際に問題があるので、
　教えていただけないでしょうか？

②ログを確認したところ、NoMethodErrorというエラーが発生していることが分かりました。

③エラーメッセージからsample.rbが原因ではないのかなと考えています。
　以下はsample.rbのソースコードになります。
　https://github.com/〇〇..../sample.rb

④エラーメッセージから変数sampleがnullなのではと考えました。
　そのため、byebugを用いてsampleの値を確認したのですが、
　nullではなくてSampleClassのインスタンスでした。

⑤エラーメッセージにNoMethodErrorと出ていたので、「rails NoMethodError」で調べてみました。
　インスタンスにメソッドが定義されていない場合にこのようなエラーが生じると、Qiitaに書いてありました。
　ですが、実際には定義済みなので、なぜこのメソッドが無いと表示されるか理解できませんでした。
　他のコントローラー等では利用できているメソッドなので不思議です。

⑥もし何かご存知であれば教えていただけないでしょうか？
　お忙しいところ申し訳無いのですが、よろしくお願いします。
```

### 質問する際のコツ
- 出来るなら教えてもらう際は直接話して聞く。
    - 質問文を送信するのはSlack等で良いと思いますが、実際に解決する際は出来るなら直接聞いた方が良いでしょう。`意図も伝わりやすいし、自分の理解力も上がります。`
- お礼を忘れない
    - `自分は出来ないから教えてもらって当たり前。`こう思ったら嫌われてしまいます。教えてもらったときにきちんとお礼を言うことで、次も快く教えていただけます！
- 相手の時間を奪っていることを意識する
    - 質問することは相手の時間を奪うことなので、出来るだけ質問の際に必要な情報を出したり、試せることを試しておくなど、`相手の時間を極力奪わないように意識する`ことはとても大事です！！

## 「コミュニケーション力」について
これは、エンジニア職だけに言えることではありませんが、仕事をする上で、コミュニケーション能力はとても重視される能力になります。
よく、「エンジニアはコミュニケーションが少なくて楽」と言う人もいますが、逆に積極的にコミュニケーションを取らないと、良い成果を上げられません。(優秀なエンジニアはコミュ力お化けが多いです。。)

### エンジニアに必要不可欠なコミュニケーション能力
#### 信頼関係の構築
要件定義はシステム開発をする上で、スタート地点となり必ず行います。
ここで`クライアントとしっかりコミュニケーションを取りながら要望をしっかりヒアリングする`ことで、その後の工程に良い影響を与えることが出来て、開発もスムーズに進められます。
クライアントより、もしかしたら大事なのは先輩との信頼関係の構築です。一番関わりが多くなる人たちだと思うので、話しやすい環境を作っておくことが大事です。
まずは、`最初が肝心なので、笑顔を意識して明るいトーンで話しかけましょう！！`

#### クライアントへのヒアリング
要件定義は、`クライアントの要望を正確に聞き出すことが出来るかが成功の鍵`です。
相手の`要望全てを正確に聞きとるヒアリング能力は、エンジニアの業務を遂行する上で非常に大切`になる能力です。
これは、フリーランスにしても同じことが言えます。フリーランスエンジニアは特にクライアントのやりとりが多いので、ヒアリング能力が優れていないと良いものが作れず信用も落ちます。

#### プレゼン力
プレゼン力とは自分の考えを相手に伝える能力のことです。
`自分が言いたいことをいかに相手に伝えられることができるかどうかが鍵`です。
IT知識があまりない人に専門用語を多用したり、言葉足らずな説明をしたりすると誤解が生じることがあるので注意が必要です。`相手の理解を得られる話し方を心がけましょう。`

#### クライアント(先輩)と仲良くなる
仕事は受注すれば終わりではなく、その後も継続してクライアントと良い関係を維持する必要があります。
そのためには`クライアントからの共感を得て、一緒に業務を進めていくことが大切`です。
仲良くなることは、仕事上のコミュニケーションも円滑になるので、仲良くなりたいところです。
空き時間にプライベートの話などで、趣味などが合えば距離が近くなります。

### 自分のコミュニケーション能力は今どのくらいか知りたいって？
そんなあなたにおすすめのツールがあります。
[日本コミュニケーション能力検定協会](https://www.ca-japan.org/diagnostics/)が出している診断で、「基礎編」・「ビジネス初級編」・「ビジネス上級編」の3つのレベルから選択できます。いずれも全12問から成る選択式で、無料で診断を受ける事が可能です。すきま時間にさっと診断するのに適しています。

もう一つおすすめが、[株式会社ダイレクトコミュニケーション](https://commutest.com/com/)の出している診断で、「環境・努力指数」・「メンタルヘルス」・「人間関係構築力」・「社会人基礎力」の各カテゴリーの設問に答えることで、コミュニケーション能力が総合的に判断されます。

### コミュニケーション向上方法
#### 言葉を選びながら話す
「当たり前だろ！」と言われるかもしれないですが、意外に出来ていない人が多いです。
例えば、ITと関係ない分野のクライアントの場合、エンジニア同士では常識的な内容でも丁寧に説明しないと伝わらないことがあります。`IT関連の専門用語も、同様に伝わりにくいという認識`でいた方が良いでしょう。
また、相手が気にしていそうなことに対してはあまり触れずに話すと言うのも大事です。`相手の気持ちになって言われたら困ることや嫌なことは言わない`ようにしましょう！

#### 相手の気持ちになって物事を考える
人と関わる時は、相手の気持ちになって物事を考える習慣を付けておくと非常に良いでしょう。
「相手の立場になって」と「相手の気持ちになって」は同じようで違います。。
`相手の立場...相手の立場になっただけで、考え方などは自分なりの考え方や行動になる`
`相手の気持ち...相手の立場になって、相手ならどう思うかを考える。相手になりきって考える`
上記のような違いがあると考えています。この違いを理解してコミュニケーションを取れるかがとても重要です！

#### 要点から伝える話し方に変える
相手に伝わるように話をするためには、`要点から伝えることを心がける`と良いでしょう。
まず要点を伝えることで、1番相手に伝わってほしい内容を真っ先に伝えることが可能になります。その後で、相手の様子を見て必要な説明を補っていくようにしましょう。

#### 聞き側に徹する
あなたは自分の話を全然聞いてくれない人の話を聞きたくなりますか？
たまに、「俺は〜、私は〜、」や「俺なんか〜、私なんか〜」と自分のことばかり喋りたがる人がいます。たくさん喋る人が悪いと言うよりは、喋る量より聞く量の方が多く無いと相手は嫌な思いをすることがあります。
`人間は、ほとんどの場合、自分の話を聞いて欲しいと思う人がほとんど`なのでたくさん相手の話を引き出して、聞き側に回りましょう！
そうすることで、相手も話を聞いてくれて良好なコミュニケーションが取れます。

#### 真似してレベルアップする
大抵、自分の周りにはコミュ力お化けが生息しています。その人を観察してみましょう。
`どういう立ち振る舞いで人に好かれ、人とコミュニケーションを取っているか`が観ているとどんどん分かってきます。
分かればあとは真似して実践するのみです！

#### 毎日実践する
ここまでくればあとは、上記を意識しながら毎日実践していくだけです！！
実践していく中で、良かった所、反省点、色々出てくると思うのでトライ&エラーですね！

## 「学習方法」について
エンジニアに一生付き纏う「学習」は、どうやって行うかで成長が著しく変化します。
ここでは、自分が実践してきた学習方法で、かつ実際に成果を上げて成長出来た説得力◎の学習方法を紹介します！！

### アウトプットを忘れない
日々、いろんな新しい知識を身に付けて行くと思いますが、それを分かった気でいてそのままにするのはもったいない！
`新たに学んだことは、Qiitaにまとめてみたり、SNSで分かりやすく発信`してみたりしましょう！
特におすすめはQiitaに投稿ですね。メリットとしては、、、

- 自分の理解不足を自覚出来て、理解への意欲が増す
- 忘れた時に、見返しやすく思い出しやすい
- 他の同じ状況の人の助けになれる

自分はこのやり方で、理解不足を補ったり、備忘録を蓄えることで困ったときの手助けになっています！

#### 具体的に何をアウトプットするか？
自分のアウトプットしている内容としては、、

- 新たな知識
- 難しかった機能の実装の手順
- 苦しんだエラーの解説
- 他のエンジニアの人たちに役立ちそうな情報

大まかに分類すると、上記アウトプットしており、これらを実践することで、`自分のため、人のためになれて一石二鳥`です。

### エンジニアと繋がる
世の中には優秀なエンジニアがたくさん存在しています。その人たちと繋がると、有益な情報を得たり、わからないことを教えて頂けたり出来て、メリットしかないです。
`自分ではわからなかったことや知り得なかった情報もインプット出来る`ので繋がりは大事にしましょう！！
具体的には、、、

- 勉強会に参加する
- 会社の先輩方と仲良くなる
- SNSを通して仲良くなる

上記のどれかで、秀才エンジニアたちと繋がりを作ることはできます！！

### 技術書(参考書)を読む
本はネットの記事のように不確かではなく、確かな情報がたくさん詰まっています。
技術書は、分厚いものが多く、読むことに抵抗を感じるかもしれないですが、`5時間ググって分からないよりは、5時間本で勉強して成長することの方が有意義`だと思いませんか？？
素晴らしい書籍はたくさんあるので、まずは一冊何でも良いので読んでみましょう！
`読んだ内容のアウトプットも忘れずに。。`

### 事前に計画をして学習する
エンジニアは常に学習を続けていかなければならないのですが、新人は特にたくさんの学習が必要です。
右も左も分からないので、たくさん学ばなければいけないことがあるのですが、習慣になっていないと、「よし、勉強しよう！」と意気込んでも、三日坊主になる可能性もあります。。
そういうことを防ぐために、事前に`「今週は〇〇の勉強をする」や「今月はこれを達成する」など、計画する`ことでスムーズに学習出来ます。
何をすれば良いかを決めておくことで、`勉強内容に悩むことも無いですし、計画通り行けば達成感に満たされて気持ちが良い`です。！

# 終わりに
ここまで、「質問力」、「コミュニケーション力」、「学習方法」の観点から解説してきました。
自分なりのやり方もあるかと思いますが、参考にしていただければ幸いです！
1人でも多くの人に役立つことを願っています。