新人エンジニアの成長を止める「完璧主義」の罠とは?失敗を恐れず爆速で成長する方法

こんにちは。ゆうせいです。

いよいよエンジニアとしてのキャリアがスタート!「早く仕事を覚えて、チームの戦力になりたい」「すごいエンジニアになるぞ!」と、胸いっぱいの希望と少しの不安を抱えている頃ではないでしょうか。

その向上心、本当に素晴らしいです!誰だって、任された仕事は完璧にこなしたいと考えますよね。でも、ちょっと待ってください。その「完璧にやりたい」という純粋な気持ちが、あなたの成長を遅らせる「罠」になってしまうことがあるんです。

今回は、多くの新人エンジニアが知らず知らずのうちにハマってしまう「完璧主義の罠」をテーマに、新しい具体例を交えながら、その危険性と賢い付き合い方をお話ししていきます。この記事を読み終える頃には、きっと心が少し軽くなり、もっと大胆に仕事へ挑戦できるようになるはずです。

「完璧」を目指すことが、なぜ「罠」になるのか?

もちろん、品質の高い成果物を目指す姿勢は、エンジニアにとって欠かせない大切な心構えです。コードの品質、設計の美しさ、それらがサービスの価値を支えているのですから。

問題なのは、「100点満点以外は失敗だ」という極端な思考に陥ってしまうことです。

特に、まだ経験の浅い新人時代は、「どこまでやるのが適切か」という物差しがありません。そのため、全ての作業に120%の力を注ごうとして、かえって時間を浪費してしまったり、間違いを恐れるあまり、なかなか最初の一歩を踏み出せなくなったりします。

その結果、タスクはどんどん遅れていき、周りからの期待に応えられず、しまいには「自分はエンジニアに向いていないのかも…」と、自信を失ってしまう。この恐ろしい悪循環こそが、「完璧主義の罠」の正体なのです。

【新具体例】あなたの周りにも潜む「完璧主義の罠」

「自分は大丈夫」と思っているあなたも、気づかぬうちに罠の入り口に立っているかもしれません。ここでは、新人エンジニアが直面しがちな、より具体的な2つの例を見ていきましょう。

例1:コードレビューで指摘された部分を「完璧」に修正しようとする罠

あなたは初めて実装した機能のコードレビューを先輩にお願いしました。いくつか改善点を指摘され、「よし、この指摘を完璧に直して、先輩を驚かせるぞ!」と意気込みます。

指摘されたのは、変数名が少し分かりにくいという点と、少しだけ処理が冗長な部分でした。しかしあなたは、「もしかしたら、変数名以外にも、もっと美しい設計があるんじゃないか?」「この際、最新の技術トレンドである〇〇というデザインパターンを導入すれば、もっとエレガントなコードになるはずだ!」と考え、指摘された範囲を大きく超えて、コードの全面的なリファクタリングを始めてしまいました。

数日間、あなたは夢中でコードを書き換え、自分では「完璧だ!」と思える芸術品のようなコードを完成させます。

しかし、再レビューを依頼した先輩の反応は、あなたの期待とは違うものでした。

「確かに綺麗になったけど、ここまでやる必要はなかったかな。それに、この新しいデザインパターンは、この機能には少し複雑すぎるね。他の人がメンテナンスする時に、かえって分かりにくくなっちゃうよ。」

ここでの罠は、「求められている修正」と「自分のこだわり」を混同してしまったことです。先輩が求めていたのは、あくまで「可読性を上げて、保守しやすくする」という最低限の修正でした。しかしあなたは、完璧を求めるあまり、過剰な設計(オーバーエンジニアリング)に陥り、結果的に時間も浪費し、メンテナンス性という別の品質を下げてしまったのです。

例2:テストコードで「カバレッジ100%」に固執する罠

次に、あなたが書いたプログラムの品質を保証するための「単体テスト(ユニットテスト)」を作成する場面を想像してみましょう。

テストコードの重要性を学んだあなたは、「よーし、テストカバレッジ100%を達成するぞ!」と目標を掲げます。カバレッジとは、全コードのうち、どれだけの割合がテストで実行されたかを示す指標です。

あなたは、プログラムの根幹をなす重要なロジックのテストを書き終えた後も、作業を止めません。エラー処理の、それもめったに起こらないような些細な分岐や、単に値を取り出すだけの単純な一行のメソッドに対しても、テストを書き始めます。そのために複雑な設定が必要になり、テストコード本体よりも準備コードの方が長くなってしまいました。

数日後、あなたは誇らしげに「カバレッジ100%達成しました!」と報告します。

しかし、そのために機能のリリースは遅れてしまいました。さらに、プログラムの仕様が少し変更になっただけで、あの複雑な準備コードを含んだ大量のテストがエラーを吐き、修正に多大な時間がかかることに…。

ここでの罠は、「指標の数字」を追いかけることが目的化してしまったことです。テストカバレッジは品質を測る一つの目安に過ぎません。本当に大切なのは、「サービスの重要な機能が、ユーザーの期待通りに動くことを保証する」ことです。100%という数字に固執するあまり、費用対効果の低いテストに時間を費やし、ビジネスのスピードを落としてしまっては本末転倒ですよね。80%のカバレッジでも、重要な部分がしっかりテストされていれば、それで十分なケースも多いのです。

完璧主義の罠から脱出するための3つの思考法

では、どうすればこの罠にはまらず、健全な向上心を持って仕事に取り組めるのでしょうか。今日から意識できる3つのヒントを紹介します。

  1. 「完了の定義」を握る!作業を始める前に、「このタスクは、どういう状態になれば『完了』ですか?」と先輩やリーダーに確認しましょう。ゴールが明確になれば、どこまでやれば良いかが分かり、無駄な深掘りを防げます。
  2. 80点を目指し、早くレビューに出す!最初から100点満点のホームランを狙う必要はありません。「まずは80点でいいから、一度形にして意見をもらおう」という気持ちで、積極的にレビューを依頼してください。早い段階でフィードバックをもらえれば、もし方向性がズレていても、すぐに修正できます。結果的に、それが100点への一番の近道になるのです!
  3. 「なぜやるのか?」という目的に立ち返る!コードを書いている時、テストを書いている時、ふと立ち止まって「この作業の目的って、なんだっけ?」と考えてみてください。リファクタリングの目的は、自己満足のためではなく「保守性を高めるため」。テストの目的は、数字を達成するためではなく「品質を保証するため」。目的に立ち返れば、今こだわるべきポイントが自ずと見えてくるはずです。

未来のあなたへ。失敗は成長の最高の糧だ!

新人エンジニアであるあなたには、失敗する権利があります。いや、むしろ、どんどん失敗すべきです!

完璧なコード、完璧な設計、そんなものは最初からできるわけがありません。小さな失敗をたくさん経験し、そこから学び、少しずつ改善していく。その繰り返しこそが、あなたを本物のエンジ-ニアへと成長させてくれます。

完璧主義という重い鎧を脱ぎ捨てて、もっと軽やかに、もっと大胆に、目の前の仕事に飛び込んでみてください。あなたのエンジニア人生が、最高にエキサイティングなものになることを、心から応援しています!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。