人間マルチタスクのスタベーション
コンカレンシーコントロールの話
長いタスクと短いタスクがぶつかった時に確率的に長いタスクが負けるので
短いタスクばっかりやられてしまって長いタスクがいつまでたっても実行されない
っていうスタベーションが起きる、
というのは、
人間のタスク管理で、小さいタスクと大きいタスクがあった時に小さいタスクばっかりやってしまって
大きいタスクが手つかずのまま残ってしまうという問題によく似ていると思った
後者はぶつかってリバートされるわけじゃなく
タスク選択のタイミングで一様ランダムではなく大きいタスクを避ける歪みがあることが原因で
ということは逆にバイアスを掛ければスタベーションが解決できるのではないか、ってとこまで考えた
表現が曖昧で複数の問題を含んでいるから切り分けが必要
リアルタイムの反応を求められる割り込み(CS用語)が頻発している場合の話は今回はしない
長期的な大きなタスクと、細かいタスクが混在している時に、細かいタスクにばかり時間が取られて大きなタスクが進まないという問題について
どのタスクを実行するかを決定する仕組みに問題がある説
楽観的な排他制御の場合には、長いタスクの方がベリファイに失敗して巻き戻される確率が高いことによってスタベーションが起こる
でも人間のマルチタスクの場合はロックが取れなかったことによって巻き戻るのが問題ではない、スタベーションには別の要因がある
その要因とは何か?
それは大きいタスクほどコンテキストスイッチのコストが高いことではないか
仕事を始めるまでのコンテキストスイッチのコストが高いから、よっこらしょ、が必要で、その必要のないタスクが並んでるとそっちを先にしてしまう
大きいタスクの問題をWBSで解決できるという案がうまくいかないのは前提に掛け違いがあるから。大きいタスクが仕事である場合、よっこらしょであっても着手は行われる。仕事でない時に時間があり当てられないという問題をWBSは解決するか?
「大きいタスクはブレイクダウンせよ」とよくいうが、残念、ブレイクダウンというタスク自体がコンテキストスイッチが大きい。そして不慣れな人にとってはかかる時間の見積もりの取れない大きなタスクだ。
なので最低限タスクの時間を区切ることが必要だろう。
タスクが大きいことか問題なのでそれを分割するという方向は正しい
分割するというタスクをもっと分割する必要がある。まずは5分間思いつくことを書き出してみるとかね
会社で夕方に紅茶を飲む習慣があるので、紅茶を飲みながらタスクを分割するとか
ワークアズライフの概念はネーミングが失敗だと思う
ストレスフルを例えばポモドーロに閉じ込めればよい