またたび

毎日がんばって生きてます😅

トム・デマルコ『ピープルウェア(第3版)』を読んだ

ソフトウェア開発についての古典的名著を読んでいくシリーズ。 それぞれの章の腑に落ちたフレーズをまとめていく。

ピープルウエア 第3版

ピープルウエア 第3版

もくじ

  • 第Ⅰ部 人材を活用する
  • 第Ⅱ部 オフィス環境と生産性
  • 第Ⅲ部 人材を揃える
  • 第Ⅳ部 生産性の高いチームを育てる
  • 第Ⅴ部 肥沃な土壌
  • 第Ⅵ部 きっとそこは楽しいところ

第Ⅰ部 人材を活用する

500以上のプロジェクトのデータ(規模、コスト、バグの数、進捗促進要因、計画の遅れ進みの実績)を集めたところ、約15%のプロジェクトが水泡に帰していた。 大きいプロジェクトほど失敗する確率が高く、25人年以上を注ぎ込んだプロジェクトのうち25%が完成しなかった。(1970-1980年ごろの調査)

プロジェクト担当者いわく、主な失敗の原因は「政治的要因」。

とはいえよくよく調査すると、政治的要因と直接関係のない意思疎通の問題、要因の問題、MGや顧客への幻滅、意欲の欠如、高い退職率などが存在した。 "実際のところ、ソフトウェア開発上の問題の多くは、技術的というより社会学的なものである。"

作業をマネジメントするのではなく、作業そのものをやっているマネージャーは多い。。 本当にハイテクビジネスに身をおいているのは、ハイテクの領域で、基本的な発明発見を成し遂げた研究者だけで、それ以外の人は他人の研究成果を応用しているだけにすぎない。 つまりソフトウェア開発者はハイテクビジネスではなく人間関係ビジネスに携わっているだけなので、自分はハイテクビジネスの旗手であるといったようなナルシシズムに陥るな。

以下の様なチーズバーガー生産販売管理哲学は、ソフトウェア開発においてはクソである。

  • エラーを叩きだせ。人間という機械を極力スムーズに動かせ。
  • 仕事でヘマをやった奴は厳罰だ。
  • 人はいくらでも補充がきくものとして扱え。
  • 決めたやり方を手早くやれ(どうやってスピードを上げるかとか、何を止めたらよいか、ということは決して考えるな)。
  • 作業手順を標準化せよ。万事、マニュアルに従え。
  • 新しいことを試みてはいけない。それは本部の連中の仕事だ。

知的労働者を効果的にマネジメントするにはこれと逆をやらなくちゃいけない。

エラー大歓迎。試行錯誤OK。間違ったら捨てろ! とはいえMGは大金を注ぎ込んで作ったものを捨てたがらない。長期的に見てメンテナンスコストが高くついても、バグの多い製品をだましだまし手直しして動かしたほうがいいと思っているケースが多い...

残業論と生産性論

残業なんかくそくらえ。40時間(8時間×5日)をはるかに超えて実のある仕事をすることは、生身の人間にはとてもできない。少なくとも、創造的な仕事に必要な張りつめた状態で、そんなに長い間続けて仕事ができるわけがない。

残業は全力疾走。マラソンのゴール前の数百メートルを全力疾走するのはそれなりに意味があるが、最初の1キロでこれをやるのはマヌケだ。ワーカホリック患者は効率は低くてもメチャクチャに長い時間働くし、プレッシャーかけてやれば自分の生活を犠牲にしながら働き続けてくれる。(ただし、プロジェクトが終わったあとでその人は永遠にいなくなる)

作業の標準化、製品品質への妥協等によって達成された「高い生産性」と退職率には相関性があり、高い生産性を維持するということはキーマンの退職という取り返しのつかないリスクが存在することを意味する。生産性は利益をコストで割ったものであり、この「コスト」には退職者の補充に費やした余計な費用が含まれるのでR

「仕事は与えられた時間に見合うところまで膨張する」というパーキンソンの法則は、あなたの部下には当てはまらない。人生はだらだら仕事をするにはあまりにも短い。なので、納期を短くすることで部下の尻を蹴るのでなく、品質を保証するのに十分な時間を与えたほうが良い。健全な作業環境のもとでスタッフが職務をきちんと遂行しない理由は、能力の不足とか、プロジェクトの目標や同僚に馴染めないとかそういう理由で、別に仕事をサボろうとしているわけではない。なので、仕事の難しさに打ちのめされたチームのお荷物的スタッフにプレッシャーをかけて仕事をやらせるのは逆効果。部署を移動するとかクビにするとかがいい。

ニューサウスウェールズ大学の調査によると、スケジュール管理をしない、「仕事が終わったら俺を起こしてくれ」という類のプロジェクトが最も高い生産性を示した。

以上より、パーキンソンの法則を手直しすると「会社のルーチンワークは、就業時間に見合うところまで膨張する傾向がある」となる。成熟した企業で働くことが楽しくないのはこの理由による。マネージャーの仕事は人を働かせるのではなく、人を働く気にさせることである。

第Ⅱ部 オフィス環境と生産性

プログラマーは知的労働者であり、騒音・雑音に集中を乱される。 よくある開放型オフィス(真ん中がエレベーターとトイレで、その周りを囲うように中途半端に間仕切られたデスクが並ぶ、いま自分が何階にいるかわからずまるで地下で働いているような気分になるオフィス)は管理者側からすれば何も考えずにすべてを同じように配置すれば良いので楽だがプログラマーにとっては最悪以外の何物でもない。

騒がしく、邪魔が入りやすく、無味乾燥でプライバシーのかけらもないオフィスはとても機能的とは言い難く、そんなオフィスでいい仕事ができるわけがない。 プログラマーの残業の真の目的は、仕事量の補填でなく、品質向上のため。一番仕事が捗るのがまだ誰も出社していない早朝とか深夜であることによる。 プログラマーの能力差が10倍であることは理解できるが、企業自体の生産性にも10倍の開きがある。―ハーラン・ミルズ『ソフトウェアの生産性』より

オフィスの騒音とバグの数には相関があり、プログラマーがオフィスの騒音に不満をいう時は「自分はバグを作りこむ可能性が高い」という危険なメッセージを発しているのと同じ。

一つのことに没頭し、ほとんど瞑想状態になり幸福感でいっぱいになるフロー状態に入るためには、15分以上の精神集中過程が必要だが、騒音や中断が起こるオフィスではフロー状態に入れない。

机の前に何時間座っていたかはどうでもよく、全神経を集中して仕事に取り組んだ時間こそ重要で、この「中断なし仕事時間」が長いオフィスこそ環境の良いオフィスだといえる。電話は他人のフロー状態をぶった切るので、電話するときは本当にこれは電話すべき内容かどうかを考えた方がいい。メールもあるんだし。 騒音対策としての音楽は1960年のカーネル大学の調査で創造的発想が失われることがわかっているので非推奨。

建築家・哲学者のクリストファー・アレグサンダーの『形の合成についてのノート』とか読むと、ある場所にいると心が和み、ある場所ではイライラして落ち着かない理由がよく分かる。

近代建築の殆どはマスタープラン的発想(同形同規格、無機質で殺伐とした画一的ビジョン)で作られている(SFのトランスアメリカ・ピラミッドとかマディソン・アベニューのビルとか)が、アレクサンダーに言わせればそれはクソ以外の何物でもない。

アレグサンダーの「メタプラン」の思想:

  • 少しずつ進化する
  • 進化を左右する一連のパターンや共通設計原則だけ持たせる
  • 関係する部分への設計に住人を参加させる

個々の建物は小幅に連続的に発展するが、共通原則を尊重しているのでビジョンの調和は保たれつつも同じにはならず、成熟した村落のように建物は進化の証として有機的秩序を持った魅力的な味を持つようになるとのこと。(スイスの町並みとか、日本でいうと高知の「沢田マンション」みたいな?)

第Ⅲ部 人材を揃える

新米マネージャーでも「人を見かけで選ぶな」という採用の基本原則を知ってはいるが、奇妙なことに、採用の際の失敗のほとんどが能力でなく外見に囚われた結果である。

人間は、経験を積むにつれて、友達を選んだり友達と親しい関係を結んだりする際に、基準からずれたものを恐れるという固定観念を克服することを学ぶが、つまり何も考えていないと外見的に魅力的あるいは標準的な人を選んでしまうという抑えられない本能があるということ。チームの誇りの対象はチームメンバーが成し遂げた成果だけ。チームの見栄えとか「プロらしさ」(男の長髪はみっともなくてプロらしくないが、女ならOK、みたいな)とかどうでもよい。

企業エントロピーは常に増加し続け、平均化、画一化してくる。採用側も学生のポートフォリオに興味が無いし、学生側も採用されるために自分のポートフォリオを面接に持参するという発想がない。

社員の退職は全人件費の20%程度のコストを占めるが、これは目に見える部分だけ。退職率の高い企業では社員はどうせそこに長くいないことがわかっているから徹底して短期的に物事を考えるようになってしまう。短期的利益のために社員を使い潰すとか。 退職が次の退職を呼ぶし、社員が居着かないと研修や環境に金をかけることもしなくなるので社員もそこに居着くメリットがない。

第Ⅳ部 生産性の高いチームを育てる

ビジネスの世界ではかなりいい加減に「チーム」という言葉を使うが、成し遂げようとする共通の目標とか結束がなければ本当のチームとはいえない。 ほんとうに良いチームができたとき、仕事はめちゃくちゃ楽しいし、プロジェクトの成功確率も高い。あとから思い出してもその当時のふとした会話とかを鮮明に覚えてたりする。

業界で有名なチームには名前がついてる。GEの「オーキーコーダーズ」、デュポンの「ギャング・オブ・フォー」、シンシナティガスの「カオスグループ」とか。そういうチームのやつらは同じキャッチフレーズを使い、特定のグループにしか伝わらないジョークを飛ばすし仕事帰りには同じ酒場にたむろする。 グループの結束力が、自分たちに心地よさを与えているときは「チーム」と呼び、脅威を与えているときは「派閥」と呼ぶ。

残業のチームに与える副作用として、例えば父子家庭で残業ができないメンバーがいたとして、彼のぶんを周りが負担して残業を続けたとする。最初は任せとけって感じでも、だんだん不公平感が募ってチームのマジックは消滅していく。痛みを分担できない人は次第に他のメンバーと疎遠になってしまう。

目標管理、年次評価、表彰の類は管理職としてやってはいけない愚かな行為である。(えっ

目標管理やそのたぐいのものはマネジメント上の責任逃れにすぎない。単純な、外的要因による動機づけを用いることで、個人に対する直接的な動機付けとか成長のサポートとか、そういうほんとうに必要なことに取り組まないことのいいわけにしている。 優れたマネージャーは「スパゲッティディナー」など、チームを全体として成功させるために、本来の業務以外の機会をちょくちょく提供し、チームとして成功するクセをつけさせる。部下は自分が管理されているとは気づかない。

専門的な技術者には、特殊な開発モードがあることは有名。これをスカンクワークあるいは不服従と呼ぶ。

おわり

頭の良いエンジニアの書いた文章ってロジカルでかつユーモアもあって楽しくサクサク読める。「ピープル」ウェアというだけあって、ソフトウェア開発論というよりはIT企業の人間関係とかオフィス環境についての内容が多くて、特にオフィス環境についての章は、そこにあげられた「悪例」がまんま前職のオフィスのレイアウトだったりして、個人的にすごく感情移入して読んでしまった。第Ⅴ章と新しく追加されたⅥ章はあまり刺さるフレーズがなかったのですっ飛ばした。

基本的に、この手の何十年も読み継がれるような名著は当たり前のことしか書いてないんだけど、その「当たり前」が今現在でも通用するあたりが名著が名著たる所以でもあり、過去から学ばない人間の愚かさでもある。

ピープルウエア 第3版

ピープルウエア 第3版