2009-06-22
■[ソフトウェア開発原則]Yak Shaving
Yak Shaving (ヤク*1の毛を刈る)
どういうこと?
- 一見無関係に見えるが、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動。
- 要するに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて、、、」ということが延々と続く状況。
- いつまでも本質的な作業に入れない・入らないことを揶揄しており、この状態に陥ってはいけないことを示唆している。
たとえば?
- 「繰り返し同じことをしているなぁ。」
- 「効率化の為に自動化の環境を作ろう。」
- 「まずWebサーバのダウンロードしよう。」
- 「ファイルが大きくてダウンロード出来ない。」
- 「ダウンロードツールを入れよう。」
- 「あれ動かない。」
- 「あ、hoge.dllが必要なのか。」
- 「あれ、まだ動かない。」
- 「OSのSP2以上が必要なのか。」
(以下延々と続く)
どうすれば?
- どこかで立ち止まり、そもそも何が目的だったかをよく思い出す。
- 目的からずれている、時間コストと見合わないと認識した場合はすぐに作業を止める。
感想
これは、本当によくあるので、気を付けたい。
- 環境を作るときによく遭遇する。
- 実装中もよくある。
- プログラムを書いていて、芋蔓式に問題が発生して、最初の問題を忘れてしまうことがよくある。
- 整理されていないプログラムを読むときも、そのうち読んでいる目的がわからなくなることがある。
- まるで問題をStackにpushして、一つ一つpopして解決して(かつ続々発生する新たな問題をpushして)いるように思える。
- popがpushに追いつかず、オーバーフローすることもしばしば。やめるきっかけにはなりますが。
参考
プロダクティブ・プログラマ -プログラマのための生産性向上術 (Theory in practice)
- 作者: Neal Ford,島田浩二(監訳),夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/04/27
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 208回
- この商品を含むブログ (96件) を見る
- 「4.14 『ヤク毛刈り』をしない」
*1:ヤクは牛の一種で、その毛が非常に長いため、本体に到達するまでには、たくさんの毛を刈らなければならない


