普段はフロントエンドエンジニアとしてJavaScript/TypeScript/Aangular/GraphQLを
メインに開発業務を行なっています。
実務を経験してから1年2ヶ月が経過して、エンジニアとしてこれまで学んだ心構えや普段意識していることをまとめてみたいと思います。(これは重要だと思いつつ100%できていないことも多々あるので自戒の意味を込めて記事にしていきたいと思います)
まずは、「エンジニアのマインドセット」をテーマにまとめていきたいと思います。
エンジニアのマインドセット
現在重要だと思っているマインドセットを述べていきます。
エラーに直面した際は、まずGithubのissueを確認する
エラーで詰まってしまって分からない時は、何よりもまず初めにGithubのissueを確認するようにしています。同じようなエラーで詰まっている方で解決策が提示されていた場合、秒で解決することが多いです。(開発者が回答されていることが多いので信用度は圧倒的に高いです)そもそも掲載されていない場合や、解決できなければQiitaや他のソースを確認するようにしています。
早めに相談する
エラーで詰まってしまった際は、早めに見切りをつけて周りの人に相談するようにしています。もちろん、分かりませんと他人に丸投げするのではなく、以下のようにエラーの想定原因や実施したことをできるだけまとめるようにしています。(焦ってしまい、まとまらずに質問してしまうこともありますが....)
1. 詰まっている箇所
Webアプリ立ち上げ時に、以下の操作をするとエラーが発生します。
・〇〇〇〇
・〇〇〇〇
===【エラー全文】===
・・・・
・・・・
=================
2. 想定される原因
・〇〇〇〇
・〇〇〇〇
3. これまで検証した内容
・〇〇〇〇
・〇〇〇〇
3. 結果
・〇〇〇〇
・〇〇〇〇
分からない時の時間配分について
実装方針が分からず、質問する必要がある場合は理解度に応じて、ある程度時間を区切るようにしています。時間を区切る際はTimeアプリを使用しています。
だいたいの目安としては...
- 全く分からない場合または実装可能だが不安が残る:30分
- 調べるあてがある:1時間
- 調べて実装可能:2時間
のように理解度のレベルに応じて、時間配分を行なっています。
質問のレベルや仕方については以下のQiita記事がとても参考になります。
1人で判断しない
最初に確認した内容と異なっていたり、何か潜在的なバグを発見した場合は、まず報告を心掛けています。1人で判断して進めた場合、十中八九間違った方向にいってしまって手戻りしてしまうことになります。実装方法で出来そうではあるが、何となく不安が残る場合も同様で、少し時間を貰って不明点を確認してもらうようにしています。先輩の時間が奪われることに引け目を感じるかもしれませんが、ここは勇気を出して質問するようにしています。
仕組みを理解する
新しい技術に触れる際は、できる限りロジックや仕組みを理解するように心掛けています。過去にGraphQLでMutationの実装を進めようとしたところ、エラーが大量に吐き出され結局か分からなかったため、周囲に相談したところそもそもMutationの仕組みや定義方法について深く理解せず、雰囲気で実装を進めていたことが原因でした。
吐き出されたエラーに対して、実装した内容とGraphQLの仕組みを理解していれば、エラーに詰まることなく解消することができたと思います。この1件以後はできる限り公式ドキュメントや2次ソースをもとに理解するように努めています。
プロジェクト全体のビジネスロジックを把握する
技術の仕組みを理解する同様に、プロジェクト全体のビジネスロジックについても優先的にキャッチアップしていく必要があると思います。
初めてバックエンドを担当したときに、プロジェクトの全体の流れを理解していなかった為、それぞれ呼び出されているAPIに対して役割や条件が分からず実装に苦労しました(そのプロジェクトは仕様書がなかったため、既存のコードをデバックして把握する必要がありました)。それぞれの条件やビジネスロジックについて把握できていれば、実装の行いやすさは全然違っていたと思います。
テキストコミュニケーション
隣の人であったとしても一日中話すことがなく、チャットで連絡をすることがありエンジニアになってから特にテキストコミュニケーションが重要だと感じるようになりました。
何らかの依頼や連絡をチャットで行う場合、文章だけだと相手の表情や口調をみることができないので、場合によっては印象が悪くなってしまうことがあるように感じます。しっかりとニュアンスや目的が伝わっているかどうか、語尾や言い回しを柔らかくして印象が悪くなっていないかを意識して記載するようにしています。例えば、何らかの間違いがあった場合、ストレートに「間違っています」と回答するのではなく、「もし私の勘違いでしたら申し訳ないですが 〜 ご確認いただけると幸いです。」と一言添えて、語尾を柔らかくして文章を書くようにしています。またチャットで連絡した後、口頭でも伝えることで印象に残るように意識しています。
最後に
実務を経験して、独学で学んでいた頃よりもはるかに力がついたと思う反面、まだまだ分からないことだらけで、常に学んでいく姿勢を大切にしていきたいと思う日々です。
次回は「分かりやすいソースコードを残すために意識していること」を記載していきます。