« [ wish ] 究極の PC デスク ( ? ) | トップページ | [ Python ] 初めての Python 第二版 読了 »

2006/05/17

プログラマを理解しなきゃ

「渋谷ではたらく社長の blog 」を読んで、、、
やっぱりいるんだねぇこーゆー社長さん。「労働環境を改善する」と書いてあるけど、 それ以前の問題があるでしょうよ。それを改善しなきゃ、とんでもなくレベルの高い 技術者なんて入らないさ。入るとしたらわたしみたいな、職場を選ぶことなんてできそうもない レベルの技術者だけだろうなぁ(;´Д`)

無駄な会議をなくせ
たとえ社長だろうが部長だろうが、「あ~」だとか「え~」とかが3割以上を占めたり、 何度も何度も同じことを繰り返す ( しかも前回の会議でも言ったことだ!) ことに 感銘を受けるプログラマなんてまずいない。Rails の理念の一つにも DRY ( Don't Repeat Yourself ) とあるけれど、重複や繰り返しは悪なのだ。

会議中に内職をしたり、昼寝をしているプログラマがいるとしたら それは無駄な会議をしていることへのプログラマからの警告に他ならない。

たとえば、今期の売り上げはいくらで会社の利益はいくら、成長率は何% とか 金勘定は出資家相手にすればいいことだ。会社の方針としてはどうこうとか、 会社はこういった方向へ進めていきたいという経営者側の考えは Blog に書くべき。

プログラマにとってはもっと大切なことがある。
ひとつは今開発中のモノの進行状況だ。どの実装が完了していて、どれがまだなのか。 どのバグが修正されていて、どのバグが残っているのか。昨日新しく発見された バグがあるって聞いたけど、それってどんなのよ。
2つ目は次に開発するモノをどうしようかってことだ。どんなモノをどんな方法で作ろうか。 メンバーは?開発期間は?プラットフォームは?何でそれを作るの?
金勘定や御高説を聞くよりも大切な会議はまだある。プログラマはどーでもいい会議に 出席できるほど暇じゃないんだよ。

集中できる環境を用意しろ
雑用を回されたりとか、電話が頻繁に鳴り響いたりとか、自分のすぐ後ろを どかどか走り回る社員がいたりする環境で集中できるはずがない。 集中できなきゃ自分が持つ本来の実力を発揮することなんて絶対にできない。 そんな環境で働きたいなんて思うはずないよ。集中できる環境が大切だということは PeoplewareJoel on Software にも書かれている。Joel on Software が解り易く 面白いので引用してみる。

知的労働者というのは、「フロー」あるいは「ゾーン」として知られる、 作業に完全に没頭して周りのことを忘れた状態にいるとき、最もよく働く。 このことは私達みんなが知っている。彼らは時間の感覚をなくして、完全な 集中状態で素晴らしい仕事をする。知的労働者が生産的な仕事をするのは、 すべてそういう状態のときだ。( 中略 )
問題は「ゾーン」状態に入るのが簡単ではないという点だ。計測してみれば、 最高に生産的な状態になるまでに平均して15分ばかりかかるのがわかるだろう。 疲れていたり、その日はもう十分にクリエイティブな作業をしていた場合には、 全然ゾーンに入ることができず、それでその日の残りは Web を見たりテトリスをしたりして 時間をつぶすことになる。
もう1つの問題は、何かあると簡単にゾーンから追い出されてしまうということだ。 騒音、電話、ランチ、スターバックスに行く5分間のドライブ、それに同僚による 割り込み ( 特にこの同僚からの割り込みが大きい )、そういったすべてのことによって、 ゾーンから追い出されてしまうのだ。
頭蓋骨の中身まで筋肉が詰まっている根性論信者には理解できないかもしれないが、 プログラミングは、何も考えずにただ言われるままに重い荷車を引っ張ったり 荒地を開墾するような数百年前の奴隷型肉体労働とはまったく別のものだ。

プログラミングは頭をフル回転させなきゃならない。 変数 ( 変数名にそれが保持する値とそれが属するスコープ ) に、 アルゴリズムをどこまで実装したのか、起こりうるエラーにはどんなのがあって それぞれをトラップするにはどうすればいいのかとかとかを一度にたくさん頭に詰め込んで それを不整合が出ないようにうまく操りながらつくるものだ。 邪魔が入ると、頭に詰め込んでおかなきゃならない情報のどれかが抜けてしまったり、 変わってしまったりして不整合が発生する。作業に戻るためにはもう一度最初から プログラムをトレースしなきゃならない。プログラマがちょっと怠けてそのまま再開したら 不整合がそのままプログラムに反映される。ほら、バグが入り込んだ。

頻繁に邪魔が入るようだと、プログラマは周りに人がいるときは仕事をしなくなる。 早朝まだ誰も来ていないときか深夜にみんなが帰ってから仕事をした方がずっと効率がいいとか、 自宅でコードを書いた方がずっとはかどるって言葉が聞こえてくるとしたら、それは 仕事場の環境を改善しなきゃならないってことだ。 営業と一緒に部屋にプログラマが詰め込まれているとか、 プログラマの部屋に電話があってそれがジャンジャン鳴り響くなんて論外だね。

プログラマが個室をほしがるのも、フロー状態を維持し続けたいからなんだ。 簡単に話しかけられる距離に、ペア以外の同僚がいるとこんなことになる。

標準的なディルバード式のキュービクルに満たされたオフィスで隣り合って働く 2人のプログラマ、ジェフとマットを考える。Unicode 版の strcpy 関数がなんだったか マットは思い出せない。30秒かければリファレンスで調べることもできるが、 15秒でジェフに聞くこともできる。マットはジェフの隣に座っているものだから、 ジェフに聞くことにする。ジェフは気を散らされて15分を失う ( マットの15秒を節約するために ) 。( Joel on Software より引用 )
一日に5回質問されれば、マットの75秒を節約するためにジェフの75分が無駄になる。 10回質問されれば150分、つまり勤務時間の 1/8 以上が無駄になるんだ。 経験から言わせてもらうと、プログラマをディルバード式キュービクルに詰め込んだ場合は、 こんな割り込みがかなりの頻度で発生する。ペアごとに部屋を割り当てれば無駄な割り込みが 発生する頻度は大きく低下するでしょ?

ゆとりを持たせろ
「徹夜・休日出勤は当たり前、つべこべ言わずに出てきて働けよ」とか、 「GW ?盆?正月?そんなの2日も休みがあればいいだろ?」ってのも NG . いうまでもないことだけど、IT の世界、特に Web 分野は技術の陳腐化が起こる速度が と~~~~~~っても早い。広く知られている技術だけでなく、常にアンテナを広げて、 まだあまり知られていないような技術でも積極的に取り入れていかないと、 すぐに技術者として飯を食べていくことはできなくなってしまう。

いつ勉強しているのかっていったら、帰宅後の時間とか休日を利用しているんだよね。 でも、徹夜休日出勤当たり前の職場ではこれができない。 徹夜休日出勤を当たり前のように強要された場合、 技術者は「いま動けばいいだけの使い捨ての道具」として使われていると考えてしまう。 プログラマは、この分野が面白いと思っているし、これから先もプログラマとして 活動していきたいと思っているんだから、 その場しのぎの使い捨ての道具として扱われるような職場で働こうなんて思わないよ。

それに、深い理解を得るためにはやっぱりまとまった時間が必要だ。 そのために使うのが、GW とか夏とか正月の連休なんだ。 連休なんてお前らに必要ねーよ、いいから出てきて働けって言われるような 職場もやっぱりおさらばしたいと思うものだ。

ゆとりっていうと会社で研修会を開いてるから十分だろとって声が聞こえたりするけど、 そんなことを言う奴は、率直に言って馬鹿としか思えない。 プログラミング技術ってのは1日2日で身につくほど甘くないし、 一方的に講釈を垂れられて身につくものでもないからだ。

Slack - ゆとりの法則 - では、組織の革新のためにもゆとりが必要だと書かれているけど、 プログラマ自身の成長のためにもゆとりは必要なんだ。ゆとりは無駄じゃなくて 投資なんだよ。

迷信を捨てろ

  • 「プロジェクトの進みが悪かったらメンバーを追加しろ」
  • 「最初から頭数を倍にすれば開発期間は半分になる」
  • 「プレッシャーをかければいいものが早くできる」
  • 「プログラマの能力は誰であっても同じだ」
  • 「プログラマ = 雑用係だ。」
どれかひとつでも当てはまるなら、経営あるいは人事に携わるべきではない。 はじめの2項についてはブルックスの法則 ( この法則はもはや常識だ ) があるし、 その次に関しては Tom DeMarco 氏 が Slack の中でリスターの法則による反論を行っている。 4項目を信じているなら、何も言わずに棺桶に入るか世捨て人になってほしい。 最後については Google の CEO である Eric Schmidt 氏が Google の黄金律10ヶ条で こう指摘している。
"Programmers want to program, they don't want to do their laundry."
( プログラマーはプログラムを書きたいのであって、洗濯をしたいのではない。)

IT 企業の経営者を名乗るなら、そしてプログラマに来てほしいと願うならば、 ↓の書籍くらいは理解してほしい。読むだけじゃないよ。理解して実践するんだ。 でなければ、わたしのような職場を選べないレベルのプログラマしか集まらないと思う。
Peopleware 第二版 ( Tom DeMarco, Timothy Lister 著, 松原 友夫 訳 )
Joel on Software ( Joel Spolsky 著, 青木 靖 訳 )
Slack ゆとりの法則( Tom DeMarco 著, 伊豆原 弓 訳 )
ハッカーと画家( Paul Graham 著, 川合史郎 訳 )
人月の神話( Frederick P,Jr. Brooks 著, 滝沢 徹 訳 )

|

« [ wish ] 究極の PC デスク ( ? ) | トップページ | [ Python ] 初めての Python 第二版 読了 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/103108/10110366

この記事へのトラックバック一覧です: プログラマを理解しなきゃ:

« [ wish ] 究極の PC デスク ( ? ) | トップページ | [ Python ] 初めての Python 第二版 読了 »