『国境なきプログラマ』を目指す~ノマドワークの究極のかたち

ちょうど1年ほど前に、こんなブログを書きました。ソニックガーデンのプログラマが単身、アイルランドのダブリンに1年間滞在しつつ、日本の仕事をしながらも、現地で生活をおくるという内容です。

こちらの記事で紹介した、ダブリン生活にチャレンジしてきたプログラマの @maedana がつい先日、無事に日本に帰ってきました。

日本との時差9時間の中で、1年間1度も日本に帰ることなく、リモートで働いてもらったのですが、結果としては、大きな問題はなく、概ねうまくいったと言ってもいいでしょう。

この記事では、そのアイルランドのプログラマと日本のプログラマやお客様と、どうやって離れた場所だけど、ひとつのチームとして一緒に働くことができたのか、ふりかえってみたいと思います。

090/365: String telephone090/365: String telephone / benjaminasmith

1年間のリモートワークの前提や環境について

彼がアイルランドに行く前に想定していたことと違ったことは、あちらの回線事情が芳しくなかったということでした。元々はカメラを使ってお互いの顔を見ながらのSkypeも考えてはいたのですが、回線の細さのために、カメラに映しての会話は殆ど出来ませんでした。

こうした問題のために、口頭での対話は基本的にSkypeの音声のみとする形で、なんとか意思疎通を図るようにしていました。幸いにパソコンの画面共有の機能だけはなんとか出来たので、お互いの画面を映しながら会話をしていました。

今回のリモートワークの前提として、ソニックガーデンの仕事のスタイルは、以下のようなツールとプロセスを採用しています。

高速で無駄のないソフトウェア開発を実現するための7つのポイント

Skypeも活用しますが、それだけではなく、色々なインターネットを経由したツールを使っています。そのためネットが繋がる環境にさえいれば、リモートワークは出来るようになっています。

工程としては、アイルランドにいるプログラマが、要件定義から設計・プログラミングから、テストまで全てを担当しています。よくあるオフショアで見かけるように工程の一部を担当するというようなスタイルはしていません。

そして、ソフトウェアは小さい形からずっと動く状態のまま、次々と新しい機能を追加したり、改修したりしていくプロセスになっています。動いているソフトウェアがあることで、それのどこを直す、どこを変えるといった形で進めていってます。

この進め方は、リモートで働く上でポイントでした。やはり設計書だけで意思疎通を図ろうとすると、Skypeの音声だけでは難しかったと思いますが、実際に動くソフトウェアを見ることで、具体的な話をすることができたからです。

制約があるからこそツールを徹底的に活用する

会って対面で話をすることに比べて、やはり離れた場所にいて協同作業をすることは、流れる情報量に圧倒的にハンディキャップがあります。その制約の中で、うまく連携して働くためには、ツールの活用は欠かせません。

やってみてわかったことは、実際に会って話せないという制約があるからこそ、ツールを徹底的に活用することを心がければ、実際に会ってプロジェクトを進めることに遜色のない開発も可能だということでした。

例えば、ソニックガーデンではチケット駆動開発というスタイルでタスク管理をしています。(以下参照)

チケット駆動開発で Pivotal Tracker を上手に使うための4つのポイント

チケット駆動開発で守る点はひとつ、仕事に取りかかる際は必ずチケットにしておくこと、ということです。チケットにない仕事をしても、それは仕事をしたとみなされません。すべての仕事はチケット化されている状態が理想です。

こうすることで、やる・やらないということが、口頭だけで曖昧になることはありません。やると決めたものはチケット化されているからです。そして、このチケットは、インターネット上のツールである、Pivotal Trackerに登録してあるため、離れた場所にいても誰でもいつでも確認することができます。

また、コミュニケーションにはSkypeの他に、youRoomを活用しています。

音声による打ち合わせのような形のときはSkypeが必要ですが、普段のちょっとしたやりとりまでSkypeでするかというと、そんなことはしていません。Skypeの音声もそうですし、チャットもそうなんですが、リアルタイムに応答が必要なものは、打ち合わせ以外では殆ど使っていません。

それには2つ理由があります。一つはアイルランドとの時差の問題です。日本との9時間の時差のある中で、リアルタイムに応答するのは大変です。Skypeのチャットだと、他の話題が出ると流れていってしまうので、非同期で使うには向いていません。

もう一つの理由は、リアルタイムの応答はプログラマの働きかたに適していないからです。よくプログラマに電話を取らせるなと言いますが、プログラミングに集中している間は、脳みそをフル活用してるので、割り込みを嫌がります。チャットは電話と同じ割り込みなので、プログラマの生産性を阻害するのです。

そこで、リアルタイムにお互いの時間を拘束せずに、話題毎に流れていかずにコミュニケーションする手段ということで、メールやメーリングリストが思いつくのですが、手軽さが足りないのと、複数人でのコミュニケーションには向いていません。

youRoomはこうしたワークスタイルを助けるために作ったもので、複数人での非同期のバッチサイズの小さいコミュニケーションに適した形に設計されています。

こうして、SkypeとyouRoomを場面に応じて使うことで、離れた場所であってもコミュニケーションロスをなくすような形を実現することができました。

チームの信頼関係は事前に築いておく

離れた場所で仕事をしてもらう、ということだけを考えると、オフショアやクラウドソーシングなどを思い浮かべることもあるかもしれません。しかし、今回の取り組みはそうしたものではありません。

リモートで働く内容は、ただ与えられた範囲で決められた作業をするというものではなく、会社の一員として、経営や会社の課題について一緒に考えたり、新しい社員への教育も一緒にしたりしています。

そこには外部のリソースという意識はなく、チームの一員として共に働いているという感覚でいます。同じ方向を向いて、沈む時は一緒という、同じ船に乗ってる感覚です。これは会社とは何か、という話にまで発展しますが、それはまた別の記事で。

ともあれ、このように一緒になってチームについて考えるのが本当の仲間で、そうした信頼関係は、やっぱり同じ空間で一緒に働くことで築くことができるのではないか、と思っています。

いきなり最初からずっとリモートのままでいて、そこまでの一体感を実現するのは難しくて、今回は、3年ほど日本で一緒に働いていたというのがあってのことだと考えています。

逆に、しっかりと信頼関係の築けたチームになっていれば、あとは離れた場所にいたとしても、共に働くという感覚は共有できるんだと思います。

今回のアイルランドとのリモートワークでやりたかったけど出来なくて、苦労したのは、食事を一緒にとる、ということでした。コミュニケーションのツールとしてSkypeもyouRoomも良いんですが、それでも、普通にしていたら、仕事の会話しかしなくなってしまいます。

しかし、一緒に働く上で、協力し合える関係を築くには、食事をともにするというのは割とアナログですがスタンダードで重要だな、と思っています。というのは、雑談をする機会というのが重要だと思うのですが、仕事中だと中々しにくいですよね。

そこで、Skype越しではあっても、同じ時間に食事をとりながら雑談をするというのをやれば良いかな、と思っていましたが、時差の壁とネット回線の細さによって、その構想は打ち砕かれました。

結果的には、定期的にふりかえりをしていく中で、やはり雑談も大事だね、とみんなの中で共有したことで、仕事中であってもSkypeで仕事の話をする前後で、なんとなくの雑談もいれていくようになってきました。

あとは、Facebookの存在も大きかったように思います。ヨーロッパでの旅先の写真であったり、普段の食事やパーティーの様子など、Facebookを通じて知ることができたので、それをきっかけに話をしたりもしました。

たしかにFacebookのおかげで、人に久しぶりにあってもそんな感じがしない、というのがありますが、それに近い感覚をもつことが出来ました。

そんなこんなで、1年間の離れた場所でのチームワークを実現することが出来ました。