Github社の働き方は凄くプログラマ・フレンドリー




田口さんの「Githubではなぜ人が辞めないのか?」という記事がたまたまFacebookで流れてきた。

なんと、一人も従業員が辞めてないのは凄い。本当かと思って資料見たら、創業5年で108人も従業員いるのに本当に一人もまだ辞めてないらしい。

これは本当に凄い、Githubが大いに参考にしたであろう37Signalsでさえ数人のミスマッチがあって辞めた人はいるのに。まあ、37Signalsがこういう働き方を広めて、いろいろトライアンドエラーがあったのだろうけど。

さらっと、”How Github Works”というスライドを見たのけど、こういうスタートアップが日本でもっと増えてほしい!もっとやれ!と思ったので、紹介してみる。(ちなみに、海外はこういう会社どんどん増えてきてるみたい。こうしないと、みんなすぐ辞めちゃうのもあるのだろう。)

会社によってベストな方法は違うので、全部猿真似しても上手くいかず、結局は自分で考えて最適だと思う事をすればいいのだけど。

と、最初に逃げ道を用意しておく。



働く時間を決めるのはアホ




9時-5時の就業形態は上手くいかない。クリエイティブなコードを書くのは、クリエイティブな挑戦だ。クリエイティビティを9時-5時の間に意図的に起こすことはできない。


生産的な時間はそれぞれが自分のゾーンに入った時起こり、早起きした時、夜遅く、普通の時間帯など、人によってバラバラ。



これプログラミング経験者ならみんなそうだろうけど、一人で静かで、邪魔の一切入らない長い時間っていうのがないとはかどらないんですよね。


プログラミングに限らず、会社でも、他の従業員がいなくなった深夜に一人で作業する時が一番集中できるとか、朝早く誰もいない時が一番はかどるとかよく聞く。


それなら、会社は非生産的な環境を作り出す悪の元凶じゃないかみたいなことを、37Signalsとかがよく言ってる。



長時間労働は破滅への道



徹夜作業は、精神を衰弱させ、コードの質を低下させ、質の低いコードが将来のコードに影響して、バグを発生させる可能性を指数関数的に増加させる。


僕も、ルーチンワーク的な作業をやってる時は、結構長時間でも続けてられるんだけど、本当に頭使うプログラミングを考えてる時は、頭がスッキリしてるとすぐ解決するのに、疲れてると、だらだらといつまでもできなかったり。



従業員を信頼する




従業員が一番の成果を発揮できるようにしたい。そのためには、従業員が幸せで、健康で、クリエイティブでないといけない。そのためには、雇った従業員を信用して、助けて、その後に、仕事を評価する。



結局は、ここが一番難しいところだと思う。放任主義には信頼が必要で、見張ってないとサボるんじゃないかってみんな心配する。


ちょっと話はずれるけど、自分がもし将来フリーランス雇う時は、時給制で、時間の計測は信頼するから勝手に計ってくれっていう形式がいいんじゃないかなと最近思った。


ソフトウェアの工数に見積もりなんて土台無理ですよね。よっぽど簡単なモノじゃない限り。時給じゃないと継続的なコミットも自分からの提案もしないだろうし。


この機能にいくらっていうと、発注側のリスクは一見低くなりそうだけど、やる側としては、いかに最短でOKの出る程度の完成品を作るかに集中すると思う。


まあ、ここはやったことのない自分の妄想なので、実際のところどうなんでしょうっていうのを経験ある人に聞きたい。


確か、孫正義さんが学生時代に教授陣を巻き込んで、製品を作った時は、こんな感じだった気がする。あれは、時給も自分で決めてくれていいから、成功して売れたら払えるよという凄いオファーだったけどw


以前、学生ベンチャーのスタートアップのオフィスをちらりと見た事があったけど、創業者の人の机が後ろにあって、その前にインターンの二人がモニタみながら作業してるんですよ。みんなの向きは一緒。


これは、前のインターンの二人がサボってたら、後ろからすぐに分かるぞみたいな意図でこの配置にしたんだろうけど、この配置で絶対働きたくないなと思った。


仕事中にツイッターとかしたら後ろから怒られそうな雰囲気がぷんぷんなんですよ。

仕事中の息抜きにツイッターやろうが、ムラムラしたらオナニーしてスッキリしようが、その人の生産性をマックスにする方法はその人が知ってるから、それでいいですよね。特に、後者は一人の時じゃないと無理ですね。



世界中からリモートで働く


場所も自由で、ミーティングもないから、時差と場所に縛られず、世界中から優秀な人材を雇える。引っ越しとか、家庭の事情で従業員が辞めにくい。


これは、日本から世界に通用するスタートアップを作るぜ!と思ってる人は凄い重要なんじゃないだろうか。だって、シリコンバレーなんてビザないと無理だし、給料も高いし。


リモートで世界中から集まったチームをマネジメントするスキルというのがこれから、凄く重要になると思う。ローカルにこだわらずに、ベストな人材を雇えるという意味で。


こういうと、マネジメントしないっていうのがValveとか最先端の主流だよと言われそうだけど。


でも、一緒にいるっていう事の価値も計り知れないものがあるから、ここらへんは悩みどころだと思う。


だって、なにげなく、休憩してる時のおしゃべりの最中にアイデアが生まれるもんですよね。となると、みんなでオンラインゲームすればいいのか! うむ、このへんは難しいところであります。



仕事の邪魔をしない




定例会議はなし、会議はとにかく減らす。何か用がある時は、その人がゾーンに入っていてプログラミング中だと邪魔したらダメだから、基本はチャットを送信しておく。で、好きな時に返信してもらう。

マネージャーは邪魔なだけだからいない。



これ、似たような事をJoelOnSofwWareっていうStackOverFlow作った人のブログで、興味深い事を書いてたのを思い出した。


「ある分野でわからない事があった時に、同僚のプログラマなら5分で答えられるとする。その時、その同僚に聞くべきか、もしくは、自分で聞かずに20分ぐらいで解決するか。」


みたいな話。


簡単に結論を紹介すると、プログラマがゾーンに入ってる時に、邪魔されると、もう一度ゾーンに入るためには、30分から一時間かかることも珍しくない。


そのため、同僚の質問を5分で答えられたとしても、その人がまたゾーンに戻るために30分以上かかるから、結果的に全体の生産性が落ちる。


なので、同僚がすぐに答えられそうな簡単な問題でも、自分でちょっと頑張れば解決できそうな場合は、ゾーンに入って集中している同僚の仕事を遮るべきではない。

というような話で、なるほど、これはなかなか説得力あるなと思った。



さて、ここまで書いてみたけど、言うは易しで、実行するのはそう簡単に行かない事がいっぱいあると思う。


例えば、チャットだと好きな時に返信すればいいから、邪魔されないっていっても、すぐに返信したら、その後すぐに返信が続くのが期待されちゃうなあとか、いろいろありますよね。細かすぎるかもしれないけど。


日本では、こういう仕事のやり方を取り入れてるので自分が知ってるのは、ソニックガーデンとかゼロベースかな。後は、YCombinator出身で日本にオフィスがあるGinzaMetricsもこれからはローカルにこだわらないほうがいいと言ってた。