DIVX テックブログ

catch-img

エンジニアとしての成長:共通の弱点と成長を実現する方法


目次[非表示]

  1. 1.自己紹介
  2. 2.エンジニアとして直面する共通の課題とその影響
  3. 3.知識と実践のギャップ
  4. 4.具体的な解決策
  5. 5.結果
  6. 6.最後に

こちらの記事はDIVXアドベントカレンダー2023の8日目の記事です。

自己紹介

DIVXでエンジニアを務めている小柳津洋毅と申します。
今回、記事を執筆する機会をいただき、どのような内容にしようかと悩みました。最終的には、私自身が実践して成長を感じた行動や、成長につながるだろうと思うポイントについて書かせていただくことにしました。これらをここに記して、皆さんに客観的に見ていただき、私なりの対処法も共有したいと思います。
この記事が皆さんの参考になれば幸いです。ぜひ活用していただければと思います。

エンジニアとして直面する共通の課題とその影響

エンジニアとして活動する上で、いくつかの苦手な点が仕事のスムーズな進行に影響を及ぼすことがあります。
まず、「問題を明確にすること」が一つの課題です。プロジェクトやタスクにおいて問題を的確に特定し、その本質を理解することが難しく、これが効率的な解決策の見出しに障害となることがあります。
次に、「問題の言語化」が苦手です。頭の中で考えていることを正確に伝えることができず、チームメンバーやクライアントとのコミュニケーションに支障をきたすことがあります。
最後に、「ゴールと現状の把握」の面での課題があります。プロジェクトの目標や現在の進捗状況を正確に把握することができず、計画立案や意思決定において、誤った方向に進むリスクがあります。
これらの点は、エンジニアとして仕事を進める上で、スムーズなプロジェクト運営を妨げる要因となり得ます。したがって、これらの課題を克服するための継続的な努力が必要です。

知識と実践のギャップ

上述のエンジニアとしての苦手な点について、「これは当たり前のことだ」とか「もう知っている」と感じる方もいるかもしれません。しかし、これらの基本的なスキルを実際に身につけ、実践できているエンジニアは意外に少なく、多くのエンジニアがこれらのスキルの習得に苦労し、結果として成長が停滞しています。
では、なぜ既知のこれらのスキルを上手く活用できないのでしょうか?理由は複数考えられます。知っているという認識があっても、それを実際の行動に移すステップが欠けていることが一つです。また、スキルが十分に定着する前に次のタスクに移行してしまい、学んだことが実践に生かされない場合もあります。
苦手なことや学ぶことが多すぎるとあれもこれもと手を出してしまい、自分の中でマスターしたと思ったスキルも、新しい課題に取り組むうちに忘れてしまうことも少なくありません。(実際僕はこれで失敗しました)
最も重要なのは、「知っている」という知識を持ちながらも、それを効果的に仕組み化し、日常業務に組み込むことができていない点です。知識を持つこととそれを実践に移すことは別問題であり、このギャップを埋めるためには、知識を行動に落とし込み、継続的な自己反省と改善を行うことが必要です。

具体的な解決策

では具体的にどのように仕組み化するかというと、私が取り組んでいる解決策は以下の通りです。

1. フレームワークを使用してゴールと現状を把握:

私は、プロジェクトの目標と現状を明確に理解するために特定のフレームワークを活用しています。これにより、目標達成に向けた具体的なステップを見極め、計画を立てやすくなります。

使用しているフレームワークは以下のような内容を含みます。
・ゴール・やりたいこと(サービスとしてどういう挙動だったら良いか?)
・現状(課題)と解決したいこと
・問題の特定
・調査した事項や考えた仮説
・仮説に基づいて行った実験やテストの結果
2. タスクの説明を受けた後、ゴールイメージを口頭または図を使って説明:

新しいタスクを受けた際、まずその目標が私の理解と合致しているかを確認します。これを行うために、私は自分の口で説明したり、紙に書き出して図を用いたりして、タスクのゴールとプロセスを明確化します。
これらのアプローチによって、問題を言語化し、文章に落とし込む能力を高め、プロジェクトのゴールと現状をより明確に捉えることができるようになりました。
3. 作業の進捗を確認するため、1時間ごとにSlackリマインダーが来るように設定しています。

 a. チェック項目の可視化: 以前指摘された点を再び繰り返さないようにするため、チェック項目をリスト化し、それを常に目に見える形で管理しています。

 b. 進捗の報告: 定期的に進捗を報告することで、現状のずれや相談がしやすい環境を作っています。これにより、先輩からのチェックも受けやすくなり、作業の手戻りを減らせています。

 c. 自己進捗の認識: 自分の作業進捗を常に確認することで、仕事が適切に進んでいるかどうかを自覚し、問題があれば早期に気付けます。

チェック項目
例え

- 仕事が自分に向いていないか?(遅れると相談者にも迷惑がかかる)
- 分からない部分をそのままにして進めていないか?(横着をしてる)
- ゴールと現状を把握できてるか?(自作のフレームワーク使用してるか?)

進捗の報告のフォーマット

報告内容
・タスクのゴール

 ⚪︎ リスト
・現在の進捗・やること

 ⚪︎ リスト

・相談・困ってること

 ⚪︎ リスト

・一言

 ⚪︎ リスト


具体例
・タスクのゴール
 ⚪︎組織設定管理画面作成
 ⚪︎マイページにあるプロンプト設定タグを組織設定管理画面に移行
 ⚪︎テストコード(Stmts80%以上、Branch60%以上)
・現在の進捗・やること
 ⚪︎コメントいただいたボタンとテキストの切り替えのMR修正中です
・相談・困ってること
 ⚪︎クリック時の背景色を無効にする
・一言
 ⚪︎以前別案件でもmaterul uiのコンポーネントで色を変えよとしたらそもそもできなかったことがあったので、どのように実装しようか?
上記の報告に対して以下のようなコメントをいただきました。

条件をもとにボタンとテキストを切り替えるだけで大丈夫な気がします。

1時間ごとに作業進捗を確認すると聞くと、「大変そうだ」とか「効率が悪いのではないか」と感じる方もいるかもしれません。しかし、このアプローチには複数のメリットがあります。
まず、定期的な進捗確認により、疑問や困難に直面したときに迅速なアドバイスやフィードバックを受けることができます。これにより、大きな手戻りが生じるリスクを減らし、長時間悩むことなく解決策を見つけることができます。また、PMやチームメンバーに対しても進捗が明確に伝わるため、全体のコミュニケーションが向上し、チームとしての生産性が高まります。
具体的な報告フォーマットを用いることで、タスクのゴール、現在の進捗、そして困っている点が明確になり、チームメンバーや上司とのコミュニケーションが効率的かつ効果的に行われます。「コメントいただいたボタンとテキストの切り替えのMR修正中です」という具体的な進捗報告は、具体的なアドバイスを受けやすく、迅速な問題解決につながります。
このように、定期的な進捗確認と具体的な報告は、エンジニアとしての作業効率を高めるだけでなく、チーム全体の協調性と生産性を向上させる重要な要素となります。

結果

この取り組みにより、私のタスク処理時間が大幅に改善されました。具体的には、プロジェクトのゴール設定や問題の明確化が、以前よりも格段に効率的になりました。たとえば、かつては一つのタスクに平均2時間かかっていたのが、現在では平均1時間30分で完了できるようになり、納期遵守率も70%から90%へと大きく上昇しました。
さらに、定期的な進捗報告と自己チェックリストの導入により、問題点を早期に発見し迅速に対応できるようになり、作業の手戻り率も30%から10%へと大幅に減少しました。これらの改善は、チームの生産性向上とプロジェクト成功率の高まりに寄与しており、今後の展開にも大いに期待しています。

最後に

最近の取り組みを通じて、自分自身の成長を実感しています。問題の明確化やゴール設定の改善によって、納期遵守の成功率も高まりました。もちろん、まだ改善の余地は残っています。しかし、以前は難しいと感じていた問題解決のプロセスが、今ではよりスムーズに進むようになり、それが私にとって大きな自信となっています。
この経験から学んだことは、苦手意識を持つ方々にもきっと参考になると思います。苦手な分野に挑戦することは容易ではありませんが、具体的な戦略を持ち、一歩ずつ前進すれば、必ず成長を実感できると思っています。困難を乗り越え、スキルを磨くプロセスを経験することで、エンジニアとしてだけでなく、個人としても大きく成長できると信じています。どんな小さな一歩でも、始めることが大切だと思います。
ご覧いただきありがとうございました!


divxでは一緒に働ける仲間を募集しています。
興味があるかたはぜひ採用ページを御覧ください。

  採用情報 | 株式会社divx(ディブエックス) 可能性を広げる転職を。DIVXの採用情報ページです。 株式会社divx(ディブエックス)


お気軽にご相談ください


ご不明な点はお気軽に
お問い合わせください

サービス資料や
お役立ち資料はこちら

DIVXブログ

テックブログ タグ一覧

人気記事ランキング

GoTopイメージ