Yak shaving(ヤクシェービング)とは|エンジニアが陥りがちな生産性の罠と対策

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

Yak shaving(ヤクシェービング)の意味

Yak shaving(ヤクシェービング)とは、本来の目的を達成するために必要だと思い込んで、関連性の薄い細かいタスクを次々と行ってしまう現象を指すエンジニア用語です。気づけば当初の目的から大きく逸れた作業に時間を費やしてしまい、生産性が著しく低下してしまう状態を表します。

日本語では「ヤクの毛刈り」と直訳されますが、IT業界では英語のまま「ヤクシェービング」として使われることが一般的です。

Yak shavingの語源と由来

この用語は、MITのAIラボで働いていたCarlin Vieriaによって1990年代に広められたとされています。元々はアニメ「The Ren & Stimpy Show」のエピソードに由来しており、登場人物が単純な問題を解決しようとして、最終的にヤク(チベット高原に生息する大型の牛)の毛を刈る羽目になるという筋書きから来ています。

プログラマーのJeremy H. Brownは、この概念を「一見合理的に見える一連のタスクが、最終的には本来の目的とは全く関係のない奇妙な作業に行き着く」と説明しています。

Yak shavingの具体例

例1:Webサイトの簡単な修正のはずが…

「Webサイトのボタンの色を変更する」という単純なタスクが、以下のように連鎖していくケースです。

  1. ボタンの色を変更しようとしたら、CSSファイルが古い構造だった
  2. CSSをリファクタリングすることにした
  3. リファクタリングにはSassが必要だと判断
  4. Sassの開発環境を構築しようとしたら、Node.jsのバージョンが古かった
  5. Node.jsをアップデートしようとしたら、他のプロジェクトとの互換性問題が発覚
  6. バージョン管理ツールの導入を検討し始める
  7. 結局、当初の「ボタンの色変更」に何日もかかってしまう

例2:バグ修正から始まる迷走

  1. 簡単なバグを修正しようとする
  2. テストコードがないことに気づく
  3. テストフレームワークを導入することにする
  4. テストフレームワークのドキュメントを読み始める
  5. より良いテストツールがあることを知り、比較検討を始める
  6. チーム全体のテスト戦略を見直そうとする
  7. 元のバグ修正は後回しになる

例3:開発環境の最適化

  1. コードのビルドが遅いと感じる
  2. ビルドツールの設定を見直し始める
  3. 最新のビルドツールに移行することを検討
  4. 全体的な開発環境を刷新しようとする
  5. エディタのプラグインを探し始める
  6. 設定ファイルの完璧な構成を追求し始める
  7. 本来の開発作業が全く進まない

なぜYak shavingは発生するのか

完璧主義の追求

エンジニアは技術的な美しさや効率性を追求する傾向があり、「ついでに直しておこう」という思考が働きやすいです。この完璧主義が、本来の目的から逸脱する原因となります。

技術的興味の優先

新しいツールや技術に触れる機会があると、学習意欲が刺激され、本来のタスクよりも新技術の探求に時間を費やしてしまいます。

問題の連鎖

一つの問題を解決しようとすると、その前提条件となる別の問題が見つかり、さらにその前提となる問題が見つかる、という連鎖が発生します。

優先順位の見失い

作業を進めるうちに、当初の目的の重要性を忘れ、目の前のタスクに集中してしまう心理が働きます。

Yak shavingを防ぐための対策方法

1. 本来の目的を明確にする

作業を始める前に、達成すべきゴールを明確に定義し、常に意識できるようにメモやタスク管理ツールに記録しておきましょう。

2. タイムボックスを設定する

「この作業には最大2時間」のように時間制限を設け、それを超えそうになったら一旦立ち止まって優先順位を見直します。

3. 「今やるべきか」を自問する

新たなタスクが発生したら、「これは今すぐ必要か?後でもいいか?」と自問自答する習慣をつけましょう。多くの場合、後回しにできることに気づきます。

4. 技術的負債リストを作成する

「後で改善したい」項目は、別途リストやバックログに記録しておき、適切なタイミングで計画的に取り組むようにします。

5. 最小限の解決策を優先する

完璧な解決策ではなく、まずは最小限の変更で目的を達成することを優先し、必要に応じて後から改善します。

6. ペアプログラミングやレビュー

他のメンバーと作業することで、客観的な視点が入り、Yak shavingに陥ることを防げます。

7. ポモドーロテクニックの活用

25分作業+5分休憩のサイクルで、定期的に自分の作業を振り返る機会を作ります。

Yak shavingと似た概念

スコープクリープ(Scope Creep)

プロジェクトの範囲が徐々に拡大していく現象。Yak shavingは個人レベルの作業逸脱ですが、スコープクリープはプロジェクト全体の問題です。

過剰設計(Over-engineering)

必要以上に複雑な設計をしてしまうこと。Yak shavingの結果として発生することもあります。

分析麻痺(Analysis Paralysis)

情報を集めすぎて意思決定ができなくなる状態。Yak shavingは行動に移っているものの、方向性がずれている点で異なります。

まとめ

Yak shavingは、エンジニアなら誰もが経験する生産性の罠です。技術的な探究心や完璧主義は長所でもありますが、本来の目的を見失わないようコントロールすることが重要です。

「これは今やるべきことか?」という問いかけを習慣化し、タイムボックスや技術的負債リストなどの実践的な対策を取り入れることで、Yak shavingを防ぎ、効率的な開発を実現できます。

次回、気づいたら関係のない作業に没頭していたら、それは「Yak shaving」かもしれません。一度立ち止まって、本来の目的を思い出してみましょう。

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

らくらくPython塾 – 読むだけでマスター