刃を研ぐ
森の中で、必死に木を切り倒そうとしている人に出会ったとしよう。
「何をしているんです?」とあなたは聞く。
すると男は投げやりに答える。「見ればわかるだろう。この木を切っているんだ」
「疲れているみたいですね。いつからやっているんですか?」あなたは大声で尋ねる。
「もう五時間だ。くたくただよ。大変な仕事だ」
「それなら、少し休んで、ノコギリの刃を研いだらどうです?そうすれば、もっとはかどりますよ」とあなたは助言する。すると男ははき出すように言う。
「切るのに忙しくて、刃を研ぐ時間なんかあるもんか!」
(『7つの習慣』、「第7の習慣」冒頭)
ソフトウェア開発における「刃を研ぐ」こと
チームのスケジュールの2割は「システムのメンテナンス作業」に割り振る
「システムのメンテナンス作業」とは具体的には、リファクタリング、バグの修正、作業プロセスの改善、小規模なクリーンアップ、運用部門のサポートなどのことで、こういった作業のために時間を確保する必要があります。どの計画立案の際にも必ず割り振ってください。 エンジニアリングチームとは、次のような感じで取り決めをしておこう。プロダクトマネージャーは、エンジニアリングチームのキャパシティ全体の20% を空けておいて、これをエンジニアリングチームの判断で使える予備の枠として与える。エンジニアリングチームは、たとえば、コードを書き直したり、アーキテクチャをやり直したり、コードのダメなところをリファクタリングしたり、データベースのシステムを入れ換えたり、システムのパフォーマンスを改善したり、といった作業のためにこの枠を使うことができる。つまり、「開発を中断してコードを書き直さなければだめだ」と言い出す事態を避けるために必要だと思うことであれば、何でも、この枠を使って手を打っておくのだ。
もしプロジェクトが今まさにひどい状態であるならば、この予備を 30% あるいはそれ以上にしなければならないかもしれない。20% も要らないよ、などと思っているようなチームには、逆に不安を覚える。
hr.icon
とりあえずkakutani.iconのツイートを貼っておく(あとで整理する)koma.icon
「修理技術」や「斧を研ぐこと」を明示して一級市民として扱うことに価値はあるんじゃないかなー。実験してみたい。いい名前がほしい…。DevMaintOpsぐらいしか思いつかないが(仮)で試してみたい
"エンジニアリングチームとは、次のような感じで取り決めをしておこう。プロダクトマネージャーは、エンジニアリングチームのキャパシティ全体の20%を空けておいて、これをエンジニアリングチームの判断で使える予備の枠として与える。" INSPIREDの初版のほう(2版ではこの話は無くなってたと思う)
"...もしプロジェクトが今まさにひどい状態であるならば、この予備を30%あるいはそれ以上にしなければならないかもしれない。20%も要らないよ、などと思っているようなチームには、逆に不安を覚える。" これをマーティ・ケーガンがプロダクトマネージャーの立場から言ってるのが「よく勉強してますね」
"チームのスケジュールの2割は「システムのメンテナンス作業」に割り振る" --『エンジニアのためのマネジメントキャリアパス』 技術組織の管理者なんだから社の資産を保全するためにここを突っ張るのは、それはそう。
パッと思いつくのはこれぐらいか…。『アジャイルな見積りと計画づくり』のプロジェクトのバッファの話(3割ぐらい余裕が要るよ)と似ているけれど、それはあくまでバッファなので修理技術とはまた別の話
エンジニアリングチームの『修復』のために自律的な枠を一定程度与えるべきだ、という権威ある()証言をお見かけの際は私までお知らせください。
間接的な証言では『ユニコーン企業のひみつ』だと“全社リソースの30%は常にカンパニーベットに取り組んでいる状態にしておく” とある。引き算すると70%はスクワッドのミッション(指示されない仕事、ここに『修復』も含まれる)に取り組んでいることになる。正気か…という気持ちで訳していた ユニコーンの顔
エビデンスっぽいのは質とスピードにcherry-pickできるようなものがありそう。そうなればエンドゲーム。
kakutani.iconのツイートへの高橋さんの返信 koma.icon
ノコギリだったのか!! kakutani.icon
ノコギリの歯を研ぐ(目立て)はなかなか大変だよ(リアルな話)最近は大工も目立てはしないそうtkskkd.icon
刃を研ぐは宮大工的には仕事の一環として含まれるし研ぐことがまず修行。研がない職人はいい仕事出来ないのは当然ですねtkskkd.icon