この記事はエイチーム引越し侍 / エイチームコネクト Advent Calendar 2019 23日目の記事です。アドベンドカレンダーも終盤・・・今年も残り少しでございます。2回目の登場@halktです。
はじめに
エンジニアになりはや4ヶ月。今までと比べて学ぶことが非常に多く、苦労もありましたがとても充実した1年でした!エンジニアとして知らなかった技術にもたくさん触れてできることも大きく増えましたが、今回は仕事を進める上での考え方とか、自分にとって影響の大きかった事柄を振り返ってまとめてみることにしました〜!
ペアプログラミングを駆使してスキルを吸収!
開発しはじめて間もない頃、**「一人で悩む時間が非常に多い」**という問題を抱えていました。実装方法(技術的な要素)調査にかかる時もあれば、業務や仕様の理解不足でわからないこともありました。
これを先輩に相談したところ、ペアプログラミングの提案を受け、二人一組でコーディングを行いました。おかげで、どのようにデバッグしているのか、どういうアプローチで対象ファイルを特定していくのか、コードリーディングにどのぐらい時間を割いているのか、どんなツールを使っているのかなど、決して一人だけでは得られない様々な情報を得られることができました。
私の所属するチームでは、仕様や業務知識に詳しい人、フロントに強い人、テストコードが得意な人など、強みを持っている方がたくさんいるので毎日学ばせてもらっています。積極的に活用して先輩エンジニアのスキルを知識を吸収していきたいと思います!
調査と質問をバランス良く行おう!
先ほどの話ともつながりますが、どこまでを自分で調べて、どこから質問するのか?という境界線がわからず苦労していました。
結論からいうと「15分間調べてわからなければ聞く」というルールを自分に課すことでことで解決をしました。これは、Googleの機械学習チームが実際に使っていたルールで、15分以上調査せずに質問に行くことはチームの時間を無駄にし、15分以上の調査は個人の時間を無駄にする、というデータに基づいたルールです。
http://tkybpp.hatenablog.com/entry/2016/08/16/173055
悩みすぎて時間を浪費することも良くありませんが、かといってろくに調査をせずにすぐに人に聞いてしまうと、他の人の時間を奪ってしまいます。上記のルールを徹底してから、以前に比べて自分で調べて解決できることも増え、質問して期待する回答が返ってくる頻度も高めることができました。
おまけ(ライブラリやプラグインの調べ方)
あまり使っていなかったので、最初は人に聞いてしまっていましたが、対象のライブラリ名などまでわかっている場合は、まずは公式ドキュメント、もしくは実際に使った人の記事などを読んでみることにしています。
問題解決するだけであれば後者の方が答えが早いこともありますが、なるべく一次情報である公式ドキュメントには目を通すようにしています。記載している内容が確実ですし、体系的になっているので知識としてはこちらをなるべく読むようにしています。
自動テストを書いて未来の不具合を防げ!
ある日、とあるWebサービスの改修にて大きな不具合を起こしてしまいました。利用者に迷惑をかけたことは勿論、事業としても実際に損失を出してしまいました。前職でも不具合を出すことは何度かありましたが、今回のようにWebサービスの機会損失とその金額を初めて算出したことで事の重大さを痛感しました。。。
この問題の直接的な原因は、私個人のテストパターンの洗い出しが甘かったためです。ただ、この不具合の再発防止を考えたときに、テストコードを書くことができていれば、今回の不具合が防げたことは勿論、その後同じミスが起きることを防ぐことができることに気がつきました。
実際振り返ってみると、今までの開発で過去のテストコードのおかげで助けられたりしてきました。テストコードを書く意義をしっかりと胸に刻み、のちに開発をする人たち(自分も含めて)にとって価値のあるテストを書くことを徹底していきたいです!!
課題を明確にし、最適な提案をできるエンジニアを目指せ!
最近あった実際の業務の話ですが、業者の方が利用する機能にて利用者からの予約などを通知するために、特定の条件でポップアップ(モーダルウィンドウ)を開く、というチケットを対応しました。私は、チケットを消化することに気がいってしまい、言われるがまま実装しようとしてしまいました。
ただ、先輩から**「本当にここでポップアップを表示する必要があるの?」**と指摘を受けて何も答えることができませんでした。その後何度かヒアリングをした結果、ポップアップを表示したいのは別の目的だったため、表示する場所を変更し、デザインを微修正して対応することに落ち着きました。
こうなってしまった原因は、無意識的に自分が作業者となっていたことにあります。実装する機能に注力してしまい本当に解決したい課題が何なのかをわかっていなかったからです。
チケットに書かれていた実装内容に捉われず、「真の課題が何か?」をわかってさえいれば、今回のような手戻りにもならず、さらに言えばもっといい提案をすることにつながったはずです。逆に言えば、何が課題なのかを明確にしていなければ良質な提案なんて絶対にできないということでもあります。
この失敗を糧に、最適なソリューションを素早く提案できるエンジニアを目指します!!
まとめ
まだまだ1人前には程遠いと日々考えながら過ごしていましたが、こうして振り返って言語化することで、着実にできることが増えていることを実感できつつあります。しっかりと振り返った上で具体的な行動に落とし込み、成長につなげていきたいと思います!
参考記事
お知らせ
エイチームグループでは一緒に活躍してくれる優秀な人材を募集中です。
興味のある方はぜひともエイチームグループ採用ページよりご応募ください。
WEBエンジニア詳細ページよりお問い合わせ下さい。
明日
明日はクリスマスイヴです!爆速エンジニアの@shgktさんのE2Eに関する記事になります!
乞うご期待!