ブログトップ 記事一覧 ログイン 無料ブログ開設

Strategic Choice

2009-06-22

[]Yak Shaving

Yak Shaving (ヤク*1の毛を刈る)

どういうこと?

  • 一見無関係に見えるが、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動。
  • 要するに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて、、、」ということが延々と続く状況。
  • いつまでも本質的な作業に入れない・入らないことを揶揄しており、この状態に陥ってはいけないことを示唆している。

たとえば?

  • 「繰り返し同じことをしているなぁ。」
  • 「効率化の為に自動化の環境を作ろう。」
  • 「まずWebサーバのダウンロードしよう。」
  • 「ファイルが大きくてダウンロード出来ない。」
  • 「ダウンロードツールを入れよう。」
  • 「あれ動かない。」
  • 「あ、hoge.dllが必要なのか。」
  • 「あれ、まだ動かない。」
  • 「OSのSP2以上が必要なのか。」

(以下延々と続く)

どうすれば?

  • どこかで立ち止まり、そもそも何が目的だったかをよく思い出す。
  • 目的からずれている、時間コストと見合わないと認識した場合はすぐに作業を止める。

感想

これは、本当によくあるので、気を付けたい。

  • 環境を作るときによく遭遇する。
  • 実装中もよくある。
    • プログラムを書いていて、芋蔓式に問題が発生して、最初の問題を忘れてしまうことがよくある。
    • 整理されていないプログラムを読むときも、そのうち読んでいる目的がわからなくなることがある。
  • まるで問題をStackにpushして、一つ一つpopして解決して(かつ続々発生する新たな問題をpushして)いるように思える。
    • popがpushに追いつかず、オーバーフローすることもしばしば。やめるきっかけにはなりますが。

参考

  • 「4.14 『ヤク毛刈り』をしない」

*1:ヤクは牛の一種で、その毛が非常に長いため、本体に到達するまでには、たくさんの毛を刈らなければならない