More Joel on Software

個人的に大好きな『Joel on Software』の続編。

More Joel on Software
More Joel on Software

posted with amazlet at 09.05.24
Joel Spolsky
翔泳社
売り上げランキング: 4363

特にこの本から何かを得ようとしなくても語り口自体が軽妙なので単純に読み物として面白い。
開発者としてだけでなくソフトウェア会社の経営者としての視点からの記事もあるので、いろんな人にオススメできる本。

エビデンスベースのスケジューリング

今回の『More Joel on Software』ではエビデンスベーススケジューリングという考え方が興味深かった。

これは開発者の見積もりに対して過去の時間記録から求めた補正を加えてより正確なスケジュールを見積もる仕組み。
エビデンスは辞書によると形跡とか物証とかそう言う意味だそうだ。

簡単に言うといつも見積もりよりも二倍の時間がかかる開発者がいれば、その開発者の見積もりを二倍にすれば正しいスケジュールが求められるという考え方だ。

ソフトウェア開発の見積もりを正確に行うのは難しい。
同じ内容のタスクをこなすのでも開発者の技量によってかかる時間は違うし、各々の開発者が開発以外に取られる時間の考慮も必要になる。
性格的な差もあり、楽観的な開発者は実際よりも少ない時間に見積もるし、慎重な開発者は多く見積もる傾向がある。

ただこうした傾向はあっても多くの開発者は相対的には正しい見積もりをする。
多くの開発者の見積もりと実際にかかる時間が異なるのは見積もり能力が欠如しているからというわけではないのだ。(ただし中には本当にまったく参考にならないまずい見積もりをする開発者もいる)

エビデンスベースのスケジューリングはそういった「開発者は相対的には正しい見積もりをする」という考え方に基づいている。

最初に開発者が立てた見積もりに対して、あとは坦々と実際かかった時間を記録していく。
この時開発のために使った時間だけではなく、開発以外に取られた時間も込みで記録する。

例えば突発的な打ち合わせとか不意のサーバダウンによる復旧作業に取られた時間も込みで。
そうすることで作業開始から完了までの全て込みの正確な時間が得られるというわけだ。

それで得られた見積もりと実際かかった時間の差から、次回の見積もりに加える補正が求められ、見積もりからより実際に近いスケジュールが得られる。
そしてこの精度は記録を蓄積するに従って高まっていき、スケジューリングのための強力なツールになる。

自分も勘で似たようなことをしているし(直感的な見積もりを2倍か3倍したらだいたい正しい見積もり)、経験的に同じことをやっている開発者はけっこういると思うけど、このようにきちんと計測してやる考え方は初めて知った。
第20章にもっと詳しくわかりやすく書いてあるので興味を持った人は是非どうぞ。

ジョエルさんの会社(Fog Creek社)が出してるFog Bugzにはこのエビデンスベースのスケジューリングの機能があるそうだ。
Redmineでもこういうプラグインとかないのかな。

ほかにも面白いと思った話がたくさん

盛りだくさんだった。

第1章 はじめてのBillGレビューのこと

なんか笑えるw

第15章 ユーザビリティがすべてではない

確かにひどいUIでも多くの人に使われてるソフトウェアとかサイトとかあるよね。

第23章 間違ったコードは間違ってみるようにする

良いハンガリアン記法と悪いハンガリアン記法の話とか。

第26章 ソフトウェアにおける高音域

凡庸な歌手は最高の歌手がいつでも出している高音域を決して出すことができない。100人集まっても。

第29章 シンプルさ

シンプルさへの的外れな信仰について。

第32章 心に残るカスタマサービスへの7ステップ

ホコリを払うように勧める。責めを負う。強欲ではどこにもたどり着けない。とかとか。