お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

開発者が楽しく仕事できる環境とは

2005/08/05 07:54
  • このエントリーをはてなブックマークに追加

プロフィール

kondo

人力検索やダイアリー、アンテナなどユニークなサービスでおなじみの「はてな」。そんなはてなを率いる近藤淳也氏が、ネットのコミュニティやサービスのあり方について独自の視点で切り取ります(このブログの更新は2006年2月9日で終了しました)。
ブログ管理

最近のエントリー

立って会議をするだけでなく、はてな社内では他にも色々なことを試みています。その中でも、開発者が楽しく仕事ができるように、という観点でいくつか紹介してみたいと思います。

まずはペアプログラミング。これは、2人1組になってプログラムの開発を行うスタイルで、XP(エクストリームプログラミング)のプラクティスの一つとしても提唱されているものです。

2人でプログラムを開発するというのは、1人がプログラムを書き、もう一人が横からそれを見ている、という方法です。この方法を聞くと、1人がそれぞれの作業を行うよりも作業量が2分の1になってしまいそうな気がするものですが、実際はそれぞれが別々の作業をするよりも効率が上がる、という興味深い逆説的な現象が発生します。

050805pairprog.jpg
ペアプログラミングの様子。こういうときはなぜかコーラが似合います。

なぜ2人1組でプログラミングをする方が1人ずつでやるよりも効率が上がるのでしょうか。それにはいくつか秘密があって、大まかに言うと、

  • ペアで作業を行うため仕事以外の事は一切できない(一人で作業しているとついついメールをチェックしたりウェブを見たりしてしまいます)
  • 「これはあとからちゃんと作るから今は適当に作っておこう」という「とりあえず」なプログラムができにくく、プログラムの品質が上がる(「とりあえず」を放っておくとどんどんバグができてしまい、最終的な効率を大きく下げてしまいます)
  • 作業者間のノウハウが共有され、スキル向上につながる(特に新人教育時には有効です)

といった効果があるように思います。

要するに、他人の力を使って自分の弱い部分を補い合う、というからくりなのですが、ペアプログラミングを行うと概して品質の良いプログラムが短い工数で出来上がります。

こうした効果が明らかになってきているので、社内では重要なものや大規模な開発を行う際によくペアプログラミングの手法を取り入れています。

ペアプログラミングは短時間に物凄い集中力が必要となるので、大体1ターム2時間程度で1日に3回くらいまでにしてあとは帰って寝る、というくらいの方が長続きします。

ペアプログラミングに限らず、はてなではなるべくだらだらと長い時間働かないよう気をつけています。僕自身7時半から8時頃までには家に帰って9時台には寝てしまいますし、他の社員も9時頃までにはほぼ帰宅しているようで、日付が変わったり、まして徹夜をしたりといった事はありません。「遅くまで会社にいる人が偉い」みたいな風潮が定着してしまわないように気をつけながら、短期集中でメリハリをつけて仕事ができる環境を作りたいと思っています。

また、開発手法ということで言うと、最近は「開発合宿」を行うようになりました。これは、5人ほどの開発者がインターネット環境のある高原などの宿に3日間ほど缶詰になって開発を行う、というものです。宿に到着するなりプログラムを書き始めて、帰ってくるまでに新しいサービスを作ってしまう、というような短期集中型の開発です。

実際最近アクセス数が急増してきているはてなブックマークというサービスは2月に行った開発合宿で作り上げたものですが、普段のオフィスから場所を変えて一気に開発を行うスタイルにも有効性を感じています。

ところで、開発者は何歳まで現役の開発者として第一線で仕事を続けることができるのでしょうか。例えば僕自身は今でも日々プログラムを書き続けていますが、「プログラマとして活躍できるのは35歳くらいまで」といった考えには少し疑問を感じています。

人間の能力的には、恐らく一生プログラムを書き続けることができるに違いないと思いますし、35歳説というのは「その年齢くらいまでに管理職にならないといけませんよ」といったキャリアプラン的な要素が入っているように思います。

そういう中で、はてなには「はてなのサービスを自分の手で作りたい」とか、「何十万人というユーザーを相手にした新サービスを自分の手で立ち上げたい」といった希望を持ったメンバーが、「ものづくりができる環境」を求めて集まってきています。

そうした希望に応えるためには「開発者が継続的にものづくりを続けられる環境」を構築しなくてはなりません。

この問題に対する一つのヒントと最近考えているのは、「偉くない管理職」という考えです。人を管理する仕事は上司の仕事であり、社員は上司の管理の下で業務にいそしむ、といった上下関係ではなく、例えば開発者が「この案件を10日後に完成したいので工程管理をして欲しい」と若い社員に管理をお願いする、といったものです。実際に最近では、新しく入った社員が年上の開発者のタスク管理を行う、という方法を試していますが、うまく回り始めているように思います。

「開発者は花形の職業で、ずっと開発を行うことは憧れの的だ」という環境を規模が拡大しても保てるようにする方法はこれからも色々必要だという気がしています。

ペアプログラミング、開発合宿、偉くない管理職、と見てきましたが、これらには「社員間の無用な壁を取り払う」という共通点があると思います。ペアプログラミングや合宿でプログラムやサービス立ち上げのノウハウを共有したり、「上司と部下」といった上下関係を、それぞれの職業のプロフェッショナルとしての対等な関係に置き換えたり、といった具合です。合宿などは、「1日の生活の中での仕事に対する意識」といった情報さえも共有しようとしていると考えることもできそうです。

こうして無用な壁や境界、非対称性を取り除こうとする試みもまた、当初から取り上げている「情報の壁」を取り除こうとする情報共有の試みと共通するものだという気がします。

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー