エンジニア一年目で学んだ大切なこと

# はじめに
こちらの内容はこれからエンジニアを目指す方や、
今年からエンジニアとして働き始めた方に向けた記事となっております。

# 自己紹介
<br>
Qiita初投稿ということで...

私は昨年(2020年)にSES企業に入社し、今年で2年目になるエンジニアです。

入社後3カ月の研修以降、SIer企業の案件に参画しています。
フロントエンドにAngular、バックエンドにNode.jsを使用したSPAの開発がメインです。

最近はプライベートでも同様の言語と、クラウドにAWSを使用したWebアプリケーションを作成しており、
（と言っても手を付け始めたばかりですが...）
こちらの開発の中で得た知見もQiitaでアウトプットしていこうと思ってます。
<br>
初めての記事ということもあり、拙い文章になってしまうかもしれませんが
ぜひ最後まで読んでいただけると嬉しいです。
<br>
<br>

# 本題
<br>
「**エンジニア一年目で学んだ大切なこと**」

ということで
<br>

私が一年間この業界で働き大切だと感じたことは
エンジニアとしての働き方、技術的な面、と他にもたくさんありますが、

今回は
#### エンジニアとしての働き方

に焦点を当てていこうと思います。

<br>
技術的なことはまた別の記事でお話させてもらうことにします。

<br>

「一年じゃまだまだ分からんことだらけやろがぃ！」
というツッコミが聞こえてきそうですが...

<br>

新米エンジニアなりに感じたことを綴っていきます。
<br>
<br>


# エンジニアとして働く上で大切なこと
<br>

私が働く中で感じた大切なことはこれです。

<br>
<br>

#### コミュニケーション超大事

#### 問題を細分化して対応

<br>
<br>
あれ...

これだけ...？

それに、エンジニアというより全ての社会人に言える話じゃ...
<br>
<br>
書いてる私もそう思いました。
<br>
<br>
ですが、これができれば新人の方でもメキメキ成長できるのでは！？

と思うほど、私にとって重要だと感じました。
<br>

# コミュニケーション超大事

<br>
これが一番です。
<br>
どの職種にも言えることだと思いますが
チームで開発するエンジニアにとっては無くてはならないものになります。

<br>

もう少し細かく分けると

* **質問する力**
* **会話のしやすい環境**

この２つになります。

<br>

## 質問する力
<br>
苦手な人が少なくなさそうな「質問する力」。
<br>

新人が上司に対して、
要件定義でお客様に対して、
<br>
それだけではありませんが、

作業をする上で質問は必要になります。

<br>

新人であった私にとって、上司に質問する機会ももちろん多くありました。

幸運なことに、要件定義に参加させていただいた際に
お客様に不明点を質問する機会もいただけましたが、

<br>

いずれにしても
質問は **現状について段階を踏んで伝える** ことが大切だと思います。

<br>
<br>
私が意識して伝えているのは
<br>

1. 作業の中で詰まった部分（「**どこで**」 「**何が**」 わからなくて詰まっているのか）
2. 必要だと思って調べたこと、そこからわかったこと
3. 調べた内容で対応した結果どうなったか
4. 現在の状況で2に戻る、<br>もしくは対応策が浮かばない旨を伝える（一旦3まで伝えていれば大体は把握してもらえる）

<br>
になります。

<br>
<br>
質問者　A君

<br>

①A君「～のやり方がわからないので教えてください。」


**最悪**です

<br>
<br>

②A君「～のやり方がわからないのですが、ここってどういうことか教えてもらえませんか？」

さっきよりマシかもしれませんが、

**A君の状況がまだよくわからない**ですよね

<br>
<br>

③A君「～のやり方がわからず作業が詰まっています」
　  「○○と××がおかしいと思ったので調べてみたところ、～と書いてありました。」
　  「書いてあった内容が正しいと思い修正した結果、予想とは異なる動作をしてます。」
　  「こちらの修正内容は間違っていますか？また、他に修正するべき箇所があれば教えてください。」

<br>


ざっくり例として書いたので
「まだ君、調べる余地あるよね？」というツッコミは置いといてください。


<br>

まず最初に、質問を受けた人は

* **なにがわからないのか、どこで詰まっているのか**
* **どこまで調べて何を対応策として採ったのか**

これが気になると思います。

<br>

上記の2点を適切に伝えることができれば
現在の自分の状況をある程度認識してもらうことができるので

回答者もどのようにして答えに導くべきか明確になることで対応が容易になり、

今後も質問がしやすい環境になります。
<br>
こういった環境は
質問者のインプットだけでなく、

「他人に教える」という面で
回答者のアウトプットとしての良い機会にもなると考えています。


<br>
<br>
<br>

また、勘違いしてほしくないので念のため伝えておきますが
### 自分で調べることは大前提
です。

<br>

ただ、
自分で調べて答えにたどり着かないまま無駄な時間だけが過ぎるのは一番よくないので

ある程度調べても先が見えないような状態のときは
遠慮なく上司に質問するべきだと思います。
<br>
また、そのタイミングを早い段階で見極めることも大切です。

頭の中にある程度対応策が練られているのであれば
少し時間をかけて調べて対応するのもありだと思いますが、

<br>
新人の方やあまり知識がない段階の方は45～60分程度調べてわからないことは
質問するべきだと思いますし、
その方がスキルアップと作業面での効率が良いと思います。

<br>
<br>
<br>

質問者が何を伝えたいかわかりにくい場合、

回答者も無駄に質問者の状況を考える必要が出てきてしまい、
うまくゴールにたどり着かないせいで次回以降に質問しにくい環境ができてしまうことは
経験ある方もいると思います。

<br>
こうなると悪循環になってしまうので、できるだけ避けたいですね。

<br>
<br>

また、
**わからないことがわからない** 状態に陥るということについて

私自身も経験があり、何を聞いたら良いのか最初はかなり戸惑います。

<br>

こちらについては 「**問題を細分化して対応**」 の項目でお話しします。

<br>
<br>

次に


## 会話のしやすい環境
<br>
こちらは先ほどの **質問する力** を上手に身に着けるために
大切なことになってきます。

<br>

朝会での進捗報告やミーティングで、全員が集まる前や終わって一段落ついた時に

上司は部下に対して **なにか砕けた会話を振ってあげたり** 、
自分から少し **プライベートな話** を持ち出すことで
そこからいつもと違った会話が生まれます。

<br>

こういったことを一度してもらえるだけで、何も知らない新人や部下にとって
「**質問がしやすい**」という状況にグッと近づくと思います。

何も会話をしたことがない人にわからないことを聞くより、
一度でも業務以外の砕けた会話をしたことがある人の方が

声をかけやすいという人は少なくないはずです。

<br>

そんなことしなくても遠慮せずに質問してよ～と思うかもしれませんが、

ほんの少しの気遣いが今後のプロジェクトや案件を円滑に進める鍵になると思うので、
よかったらぜひ試してみてください。

<br>
<br>
（去年の新人エンジニアより）
<br>
<br>
<br>
<br>
<br>

先ほどのお話は主に上司や先輩方ができる、新人に対しての環境作りという内容でしたが、

<br>

新人の方にもできることがあります。

<br>

それは
新人同士でも同じように **会話のしやすい環境を作ること** です。

<br>

新人の中でもある程度働いていると

得意・不得意の分野が少しずつ出てくると思います。

<br>

こういった中で新人同士の知識のシェアができると
成長速度がより上がると思うので、

業務時間外やちょっとした休憩時間を使って話をしてみるのもいいかもしれません。

<br>
<br>
<br>

当たり前でとても大事なことですが、

質問をするということは **相手の時間をもらう** ということなので、

<br>
教えてもらえることが当然だと思わず
質問者も最低限、自分の状況を丁寧に伝えて

相手にとって無駄な時間にならないようにしたいですね。

<br>

感謝の気持ちをもって質問することが大切です。

<br>
<br>

以上が **コミュニケーション超大事** 
についてのお話になります。

<br>
続いて...



# 問題を細分化して対応
<br>
こちらも非常に大切です。
<br>
<br>

#### わからないことがわからない

<br>
つまり

<br>

#### 何を調べたらよいのかわからない


という状況だと思います。

<br>

この業界は常に新しいツールが作られたり
難しいツールや仕組み、言語の組み合わせが多く

このような状況に陥る人は少なくないと思います。

<br>

この問題を解決するために私が意識していることが、タイトルにある通り
<br>
#### 問題を細分化して対応

ということになります。

<br>

ざっくり言えば

<br>
<br>

カレーの作り方が全く分からないA君（再登場）

<br>

A君母「今夜はカレーを作ってちょうだい」

<br>

A君「わからない！！！！！」

<br>
<br>

こんな状況です。

<br>
<br>

それでは「カレーを作る」という問題を細分化します。

<br>

まずそもそも、カレーを作るために

①**なにを材料（情報）として持っておく必要があるのか**
②**その材料をどう切って**
③**どのタイミングで炒めて**
④**いつ煮込むのか**

<br>

こういったことを理解していなければカレーは作れませんよね。

<br>

当たり前の話ですが、皆さんは日常生活で問題に直面した時、

無意識に問題を細分化して

「まず何をして、次に何をしなければいけないか」ということを

自然に考えて解決しているのです。

<br>
<br>

これが仕事になってわからないことが増えてしまうと
途端に調べたり考えることが難しく感じてしまいますよね。

<br>

こういった時でも問題は細かくして対応すると
少しずつですが解決に近づき、**ただ全て教えてもらうよりも理解も深まります**。

<br>
<br>

#### 自分は今、何を使って何をしようとしているのか

#### どんなエラーが表示されているのか

#### どこまではわかっていてどこからがわからないのか

<br>
<br>

#### SQLで複雑な条件の書き方がわからない

#### SQLで考えず、テーブルにある要素だけを使って考えると何を組み合わせると特定できるか

#### それらの組み合わせを一つずつSQLで紐付けて考えるとどうなるか

<br>
<br>

直面している問題から、解決のための多くの材料を得ることができるはずです。

小さな「わからない」を少しずつ調べることで、
そしてそれらを組み合わせて検索することで

答えやヒントはいくらでも手に入ると思います。


<br>
<br>

手も足も出ないような問題が起きてしまったときには

投げ槍にならず、まず落ち着いて一つずつ紐解いていくといいと思います。



<br>
<br>
<br>
<br>

# 最後に

<br>

タイトルの「大切なこと」という割に大した内容ではなかったかもしれませんが、

一年間この業界で働き、私なりに大切だと感じたことになります。

<br>

エンジニアはコミュニケーションが命だとも考えてます。

もちろん個人でどんどん解決できてしまう人もいると思いますが、

<br>

お客様がいて

チームで開発する

<br>

という以上、コミュニケーションは避けては通れないと思いますし

うまく使えば**自分の成長**や**プロジェクトの開発効率アップ**にもつながります。

<br>
<br>

会話や質問をすることが苦手な人が多いかと思いますが、

ほんの少し意識してみることでより良いエンジニア生活に近づくかもしれません。

<br>
<br>

新人の皆さん、同期の皆さん、

そして上司の方や先輩方も

たくさんお話ししましょう！！
<br>



<br>
<br>
<br>
<br>

最後に、ここまで読んでくださった皆さん

読みづらかったりちょっと違うんじゃないかと思われた方もいるかもしれませんが

温かい目で読んでくださりありがとうございます。

<br>


今後も勉強をしつつ、少しずつアウトプットをしていこうと思いますので、
ぜひ読んでいただけると嬉しいです。

<br>
<br>

最後までお付き合いいただきありがとうございました。

<br>