ハーバードビジネスレビューの記事が、作業の切り替えをせずに一度にひとつの作業を行うことの利点を取り上げている。この記事には700以上のコメントが付き、多くがソフトウエア開発で一度にひとつの作業を行うことの難しさについて論じている。そして、スクラムやカンバンを活用してこの困難に立ち向かう方法も論じられている。
Tony Schwartz氏がこの記事で指摘するように、作業の切り替えは生産性が劣化する。
“単一の作業ではなく複数の作業に従事することで生産性が劣化するのは、注意散漫の当然の結果です。また、作業の切り替えを行うとその作業が完了するまでの時間が平均25%も増えてしまうのも生産性劣化の原因です。”
Joel Spolsky氏はプログラマの視点からこの問題を論じている。
“特にプログラマを管理する場合、作業の切り替えにはとても時間がかかります。プログラミングは一度にたくさんのことを頭に入れておく必要がある作業だからです。一度に多くのことを覚えておければおけるほど生産的にプログラミングができます。全力でコーディングしているプログラマは頭の中にものすごく多くのことを詰め込んでいます。変数名やデータ構造、インポートしているAPI、利用している関数の名前、ソースコードを保存しているサブディレクトリの名前までも覚えているのです。そんなプログラマをクレタ島にバカンスに行かせたら、すべてを忘れるでしょう。人間の脳が揮発性の高いRAMから検索できないバックアップテープに記憶を移動してしまうのです。”
Greg Gigon氏はアジャイルの、要求を小さな部分に分割することで、ひとつのタスクが終わり次第、次のタスクを実施できるようにするという方法に注について話している。カンバンやスクラムのようにカードフォールを使って作業を同期する方法を用いれば、一人に一度にひとつの作業を割り当て、その作業が完了してから次の作業に移ることができる。
ペアプログラミングを行うと、メールやソーシャルネットワークの確認をしにくくなる。TechCrunchの記事によれば、
“ふたりで一緒に働くだけで、休憩になるまでメールを含む個人向けサービスのチェックをしなくなります。つまり、作業時間が増えるのです。”
ポモドーロ法やパーソナルカンバンのような手法は個人の時間や優先順位、仕事の完了を管理する上でとても便利だ。
アジャイルチームの中には、インスタントメッセージングやブログ、ウィキなど非同期のコミュニケーションツールを使ってチーム内の混乱を最小限にしているチームもある。また、AtlassianのCharles Miller氏が提唱する、チームの誰かが‘邪魔され役’を担うという方法も興味深い。
“一人の開発者を“邪魔され役”に指名しました。そして、2週間の間、すべての質問や要求など、チーム全体の活動を邪魔する物事をすべて引き受けてもらいました。”
しかし、Joel Spolsky氏もDon Reinertsen氏も、対照的な利点を挙げ、作業の切り替えの負の側面だけに着目することに警鐘を鳴らしている。
Don Reinertsen氏は平行して進めている優先度の低い作業が第一優先の作業の品質と効率を改善してくれる場合について話している。
“例えば、多くのエンジニアリングの学部の授業では、学生は複数の科目を切り替えながら勉強しなければなりません。1年間、純粋数学を教えてから、物理学を教えることもできますが、学生は純粋数学と物理学の関連を理解するのが難くなります。私は本を書く場合、ひとつの章を独立して完成させながら一冊の本を書き上げるわけではありません。周期的に各章を行き来することで、各章をよりしっかりと統合します。一度にひとつの章だけを書く書き方だと、同じ考えの繰り返しに陥ってしまいます。第10章を書く頃には第1章のことなど忘れているからです。”
Joel Spolsky氏は運用環境での致命的なバグが緊急の課題になり、プログラマが現在の作業を止めてバグ修正を行う場合について例示している。
Don Reinertsen氏は次のように結論を下している。
“無意識のうちに作業の切り替えを減らそうとしていることに気づいたら、ふたつ自問してみるといいでしょう。ひとつ目は、作業の切り替えにかかるコストを減らすために出来ることはすべてしたか、という問い。もうひとつは作業の切り替えが生み出してくれる利点を享受しているか、という問いです。もしも、コストより利点の方が大きければ、作業の切り替えを減らす必要はありません。”
あなたの経験はどうだろうか。作業の切り替えコストを最小限にするためにどんなことをしているだろうか。