アジャイル(?)なチームの話
From The Joel on Software Translation Project
Joel Spolsky / 青木靖 訳
2006年11月15日 水曜
契約を取るためプログラマに2時間の緊急の割り込み作業をさせることで、プログラマの時間を2週間無駄にすることになりうるという仮想的なストーリーをDmitri Zimineが書いている。「サラが古いプロジェクトについて考えるのに2時間使っただけで、彼女は新しいプロジェクトの生産的な作業を1日分失うのだ」と彼は言っている。
コンテキストスイッチングは有害だというのは同意見だ。まったくその通り。
Dmitriは開発マネージャはこうすべきだと指摘している。「開発者には元々のプランの通りにさせる。頭のコンテキスト切り替えから彼女を守るように提言する。重要で興味深いプロジェクトにひたむきに取り組むのがどんなにクールか彼女に思い出させる。周りの圧力は自分が受け止めることを請け合う」
これもまた私の同意するところだ。マネージャにはプログラマのための抽象化レイヤを作る責任があるということに私は完全に同意する。そうすることで、プログラマがコードを書いているとき、外の世界が存在しないかのように集中できるようにするのだ。
しかしながら、そこに書かれた結論は何か奇妙なものに思えた。Dmitriはコスト/ベネフィットの等式の片側しか見ていない。彼はサラが注意深く計画された2週間のイテレーションを中断すべきでないという説得力のある議論を展開しているが、議論のもう一方の側面については触れてもいない。重要な販売のチャンスが失われるということだ。
アジャイル開発の本分はアジリティにあるとされている。そこではプランは速やかに変更できるものとされている。2週間のプランに奴隷のように従い、顧客の要求に応えるためにスケジュールを調整することもできないような堅苦しいプログラミングチームとは違うものとされている。Dmitriの結論は、言いにくいのだが、アジャイル開発の真反対であるように思える。アジャイルというのは官僚的な堅苦しい手続きを同じように堅苦しい別な手続きで置き換え、顧客の要求は相変わらず考慮しないようなものではないはずだ。
この仮想的な事例が詳しくはどんなものなのかは知らない。あるいは現実の顧客の要求はそれほど緊急のものではなかったのかもしれない。でも、本当に緊急だったのかも。それによって顧客は会社を救うことができ、みんなweb 3.0億万長者になれたのかもしれないのに、教条的なサラが2週間のプラン通りにやるのにこだわったため(そうするのが「アジャイル」だから)、利益を失うことになったのかもしれない。どうなのかわからない・・・ここには片側の話しか書かれていないから。
Microsoftは最近Internet Explorerの新バージョンをリリースした。彼らがプロキシ検出コードにバグを持ち込んだため、ごく一部のCopilotユーザの元でクラッシュが起きた。Copilot開発チーム——Fog Creek内部では簡易的に「ベン」と呼ばれている——は、Copilot 2.0のリリースに向けて忙しく働いていた。それでどうしたと思う? IE7をインストールした私たちの顧客がクラッシュを経験している。これは許容できないことだ。ベンはそれまでやっていた作業を止め、古いバージョンのコンパイラをインストールし、古いソースコードをチェックアウトし、クラッシュが起きないように修正し、パッチをサーバに上げた。これはCopilot 2.0を中断させ、遅らせることになったし、コンテキストスイッチングは有害なものだ。しかしそれでもこれは正しい決断だった。コンテキストスイッチングのような心理的に困難なことができる能力は私たちの製品をより良くする。これはプログラマたちが高い給料をもらっている理由なのだ。彼らがアーロンチェアに、無制限のM&Mチョコレートに、無料のケータリングのランチに、30インチ液晶ディスプレイつきのすごいコンピュータをもらっているのは、MicrosoftがDLLを引っかき回して新しいバグを紛れ込ませても対処できるためなのだ。
コンテキストスイッチングは苦痛だ。誰かの仕事を中断させるときには、コンテキストスイッチングのコストも考慮に入れる必要がある。しかしすべての決断にはいい面悪い面があるものだ。マネージャが悪い面だけ取り上げていい面を考慮しないなら、彼は自分の仕事をしてはいないのだ。
