はてなキーワード: ブルックスの法則とは
ソフトウェア開発の業界で有名なブルックスの法則というものがある。
倍の人員を投入しても半分の期間で開発は完了しないわけで、このことは時にソフトウェア開発の特性のように語られるのだが、果たして言うほどソフトウェア開発だけの特性なのだろうか?
そりゃ「100個ある土嚢をあっちからこっちまで運べ」ぐらいに単純な作業ならば倍の人員を投入して半分の時間で作業完了できそうだが、現実にそこまで単純な作業は稀だろう。
既に工場のラインまで作れている状態ならば、製造ラインを倍にすれば単位時間の製造量は倍になるが、実際はその前に「工場のラインを作るまで」の工程がある。
じゃあ商品企画、設計、商品試験の人員をそれぞれ倍にすれば半分の期間で生産ラインを作るところまで持っていけるかと言えばそうではないだろう。
その副産物として、個人開発と大規模開発の違いが分からない人が増えていく、これはいただけない。
下手にかじって誤解されるぐらいなら、よく分からないものだと思ってくれていた方がマシである。
実のところプログラミングは難しい。
企業で必要とされるような、長期的にメンテナンスできるコードを書くのは難しいのだ。
プログラミングの簡単な面だけでなく、難しい面を教えないのは無責任だ。
プログラミングは何らかのシステムを作り上げるために行われる。
厄介なのは、システムが達成すべき目的が変わりうるということである。
やりたいことが増えたり、本質的に違うことが目的になってしまうこともある。
プログラミングをする人間は、少しだけ未来を予知して、変更に耐えられるようにシステムを作ることを求められる。
ちょっと変えるだけ、と言われたとき、ちょっと変えれば新しい目的を達成できるに作るように作る。
長い文章を複数人で手分けして書くようなシチュエーションをイメージして欲しい。
最初から最後まで首尾一貫した文章を書くにはどうするだろうか。
一度全員で話し合って内容を決めた後、パラグラフ毎に担当を割り振り、メンバ内で信頼できる人に、特に重要とされる文章の最初と最後を任せるのではないだろうか。
そして最初と最後を書く人が「やり手」なら、書いていくうちに全体の主張がちょっと変わることを見越して、ある程度あそびを持たせた書き方をするだろう。
プログラミングで同じようなことをすると、大規模開発と呼ばれる代物になる。
個人では作れないような規模のシステムを、複数人で分担して作り上げていく。
「やり手」なら、うまくパラグラフに分割できるように繋ぎ目を用意し、さらにはシステムの目的が変わることを予知し、あそびを持たせた作り方をする。
個人開発であれば、時間的な遅れを作業量によって力技で解決することも可能である。
開発に携わるメンバを途中で増やしたからといって、遅れた時間を取り戻すことはできない。(ちなみにこれはブルックスの法則と呼ばれている)
悲劇を起こさないように、うまく全体を構成する能力が問われる。
うまく全体を構成する能力とは、人を束ねる能力、そしてプログラミングの技術である。
プログラミングは難しい。
http://anond.hatelabo.jp/20161026210411
この意見を見て目が覚めた
>「ダラダラ残業」と「集中して定時上がり」の二択で話が進んでるけど「ダラダラして定時上がり」って選択はないんでしょうか。
>挑戦する前から諦めるなよ!頑張ろうぜ!頑張ってダラダラ定時を勝ち取ろう!
いつから守りに入ってたんだろう
確かにダラダラ定時退社してこそ真の生産性向上だと思う
ちなみに別にサボろうという話ではない
要は疲弊せずに余裕を持って仕事ができるように頑張ろうという話だ
しかしこれを実現しようとすると非常に難しい
>業務を効率化した結果、時間が余り、どんどん仕事がまわってきて、残業時間は同程度なのに、仕事量だけが増えていくクソ社会。
これがあるからだ
頑張って素早く仕事を減らしたと思ったら、その分仕事が増えるんだ
これは私の周りでもそうだ
より能力がある人は、仕事が早いし、その人にしかできない難度の高い作業があったりするから自ずと大変になる
その分高い給料を貰っているかといえばそうでもないから悲しい話だ
じゃあ適当にサボれば良いのかといえばそれも違う気がする
・定時で上がる
・疲弊しないようにする
・成果は落とさない
非常に難しいけど、これって「時間効率は変えずに疲弊しないように工夫する」ということだろうか?
頭空っぽにしてダラダラやっても同じだけの結果が出せればいいわけだ
ここからは業界次第になってしまうけど、ぱっと思いつくのはこういうのだろうか
次に何をするか考えると非常に頭を使う
そもそもミスが入る余地を無くすとか、そういう工夫の方に力を割くべきなのかも
「自分は一瞬でできるけど、他の人はすごく時間がかかる」ものを作っていく
この時に「私なら一瞬でできます」などと言わない
それやると仕事が増える
「得意です」も危ない
初めてやる仕事は疲れる
できるだけ依頼とかも寄せていきたい
まあやりすぎると「依頼書」とかになって、逆に周りが大変になるから注意が必要かも
質を上げるのは本当にキツイ
どこまでも時間を食うし、どれだけ早く仕事を終わらせても質にとられる
「このタスクをやってればとりあえず質上がる」が欲しい
全然成果が上がってないとか、間に合わないとか
ブルックスの法則ってあるじゃん(9人の妊婦を集めても、1ヶ月で赤ちゃんを出産することはできない)
そういう「いやこれ以上物理的に早くならないですから!」っていうのを最大限活かして納期を延ばす
やりすぎると競争力失うけど
時間的なボトルネックになりつつ、周りが絶対に逆らえないくらいの技術力を付ける
そういう人かっこいいよね
「あの人が動かないんじゃしょうがねーよ、帰ろ帰ろ」ってなる
アジャイル的な考え
細かく出していきましょうっていう(業界次第ではできないな)
ただこういうのもやりすぎると「その作業誰でもできるからバイトにやらせよう」とかそういう風になるよね
かと言ってタスクに拘泥すると、いつの間にか競争力をなくしていく
難しい
あと、こういうのが実現できても「定時だから帰る!!」ってしないといくらでも仕事できちゃう
そういう人知ってる
ちなみにアンチパターンも考えた
アンチパターンの方が多い気がする
他の人に頼むより早いんだもの
もちろん他社に勝つためには必要だけど、楽にはならない
半分の時間で終わるようになったら、その分仕事増えるだけじゃないか
定時が早くなることなんてたぶん無い
そんな現場知ってる
自分はいいかもしれないけど、周りがその分困ってるパターン多い
なんか違う気がする
シンガポールのPMの方のブログとか、ベルギーの実態書いたブログとか読んだことあるが
会社が社員の都合に合わせていて、上司がどうにかしてるみたいな
わかんねーな
イタリア人とかどうしてるんだろうな(失礼)
すごく良いこと書いてあったのですが参考にしようとしたらサイトが消えいたので、魚拓から転載。
働・学・遊・美をミックスしましょう
計画は役に立たないが、計画することは不可欠だ。
by ドワイト・D・アイゼンハワー(第34代アメリカ大統領)
人を最もダメにするのは「全体像」を見せずに「部分的なこと」をずっとさせること。
これ続けてると何も考える力のない指示待ち人間ができあがる。こわいこわい。
by 外尾悦郎(スペイン、バルセロナのサグラダ・ファミリア主任彫刻家)
腹が立ったら自分にあたれ、悔しかったら自分を磨け。
神は細部に宿る。
by ミース・ファン・デル・ローエ (建築家)
放っておくと会議の時間の九十五%は「コメントの交換」に使われている。
by 「ケッヘル」(中山可穂)
重要なことは、正しいか、間違いかではない。うまくいくか、いかないかです。
マネジメントとは、そのようなものです。
by ピーター・F・ドラッカー(マネジメントの神様)
やってみせ 言って聞かせて させてみて ほめてやらねば 人は動かじ
話し合い、耳を傾け、承認し、任せてやらねば、人は育たず
やっている、姿を感謝で見守って、信頼せねば、人は実らず
あなたに幸運の女神が微笑んだのであれば、プロジェクトは無事に完了し、幸せになれます。とてもとても幸せになれます。多くの人々は、自分では何の失敗もしていないのに、ここまで到達することができないのです。豪勢な夜を計画してください。どんちゃん騒ぎをして散財してください。そして、その時のことをいつまでも語り継げるようにしてください。
by 「アート・オブ・プロジェクトマネジメント」
この50人時間の差が大規模で長期間のプロジェクトの場合に大差を生む。
20人のチームの場合。
この4人分の差が大規模で長期間のプロジェクトの場合に大差を生む。
ミーティングと同じようにコストを意識する。読む人の時間をムダに奪ってはいけない。
反省会は、社内グループウェアのメッセージ機能を使って、こんな感じでやってます。
ファイアープロジェクトに助っ人参戦した場合にどうするか。原因のほとんどはマネジメントもしくはコミュニケーション。
20人程度のチームならこれらを1~2日で終わらせて雰囲気を一新する。あとはふつーのマネジメントへ。
拝承できない人の特徴は、よくネットやテレビで見かけますが、SIerに向いていない人の特徴 はあまり見かけたことがないので、10個挙げてみました。
いくつか似たようなのが含まれてますけど。
過去に出会った人々(自分も含め)の中で、「SIerに向いていない」と思った人々の特徴をあげていってみました。さすがにこの特徴を全て満たしている人には会ったことないですが、近い人はいた気がします。(自分も含め)
あくまで「SIerに向いていない」なので、納品しない受託開発などの場合にはこの限りではありません。
他にもたくさんあると思うので、これぞという特徴を思いついたらぜひ教えてください。
「人数増やすと…」について補足。
http://ja.wikipedia.org/wiki/%E4%BA%BA%E6%9C%88%E3%81%AE%E7%A5%9E%E8%A9%B1
スケジュールが遅れているソフトウェア開発プロジェクトにさらにプログラマを追加すると、そのプロジェクトはさらに大幅に遅れる。これを「ブルックスの法則」という。この大幅に遅れることの原因は、新しく参加するプログラマがプロジェクトについて学ぶ時間が必要となること、およびプログラマが増えることでコミュニケーションのオーバーヘッドが増えることである。N 人の人々が自分たちの間でコミュニケーションをとる場合 (階層的な組織を構成していないものと考える) 、N が増加すると、彼らの生産量 M は減少する。生産量 M が負の量になることさえ起こりうる (例えば、ある日の終業時点における全ての残務作業量が、その日の始業時点における全ての残務作業量よりも大きい場合——たくさんのバグを作りこんでしまった場合など) 。
今回のケースでは、60人が1300人になったので、コミュニケーション量は約477倍になるわけだ。