リモートワーク、ひとりでやるか、みんなでやるか

前置き

自分はいま週に3日の在宅勤務、2日はオフィスに出社という働き方を3年程度続けている。

このペース自体は3年間ほとんど変わっていないのだが、2018年1月からチームとしての仕事のやり方が大きく変わった。 具体的にはチームでモブプログラミングと1週間スプリントを始めた。

10年以上プログラマーとしてやってきているが、プログラマーとはこういう働き方をするものだっただろうかという新鮮な気持ちがある。

つまり、ブログタイトルのひとりでやるか、みんなでやるかとは、リモートワークをしながらその業務は個人で非同期的にやるのか、複数人で同期的にやるのかという意味である。

今までのやり方と今のやり方、どちらが良い悪いというものではないが、とにかく今自分はどう感じているかというメモを残しておくことにする。

所感

  • 3人よれば文殊の知恵という言葉は正しい。2人(ペア)と3人(モブ)ではかなり違う。
  • リモートメンバーを含めたモブプログラミングも難しくない。いまや普通にできる。
  • リモートメンバーと一緒にモブプログラミングをしようとすると全員がヘッドセットつけたリモートスタイルでやるのが一番いい。
  • リモートモブプログラミングは物理オフィスと在宅勤務の間での情報格差をかなり小さくできる。
  • とはいえ一つのオフィスに集ってやるのが最高効率という論はくつがえせない。ホワイトボードを用いた議論がネック。
  • 静かに一人で検討しながらコードを書くのが何よりも好き…という人にはそもそもモブプログラミング向かない。
  • リモートメンバーが自分一人ではこれ以上リモートで仕事の進め方の新しい知見は出なさそう。
    • 自分はリモートモブプログラミングで普通に仕事できてるが、ほかの人も同じようにできることなのかよくわからない。
    • だれかリモート枠でもう一人チームに入ってみてほしい。応募はコチラ

2017年の働き方

  • 2人チーム
    • 自分は大阪オフィス勤務で普段は在宅勤務。もう1人は東京。
  • 要件や設計は事前にほぼ決定している
  • ドメインは非常に狭い(単一システムの単機能の開発)
  • タスクは分担してそれぞれが分担して計画立てて実施
  • レビューは github のやり取りがメイン
  • 共有は毎日5分程度の昼会と週に一度マネージャーを交えて進捗共有ミーティング

良かったこと

時間の制約がほとんどなくて自由だったことが大きい。
共有したスケジュールに対して、自分のペースでもくもくと実装するだけなので気が乗る日はガンガン実装するし、気が乗らない日は勉強したり設計について気になっていることを洗い出して仕事した気になったりできる。

ひとりで静かに考えることができるので、精密に設計を検討できる。これはもしかしたら錯覚なのかもしれないが満足感がある。

子供がまだ小さいこともあり、突発的に仕事部屋からリビングに行ってあやすというのも気軽にできた。

悪かったこと

設計の共有やコードレビュー、知識共有が文字ベースになることが多かったため密なコミュニケーション取れずに間延びしたコミュニケーションがしばしば発生してしまっていた。

謎のハマりや見当違いの方針で1日無駄にしたりという事が時々発生した。

2018年の働き方

  • 10人程度のチーム
    • 自分は大阪オフィス勤務で普段は在宅勤務。あとはみんな東京。
  • 要件はほぼ決定しているがディティールは開発メンバーに委ねられている
  • ドメインの範囲は広く、知らない部分が多い(複数システム&アプリ~基盤レイヤ&AWS
  • タスクは一週間以下で終わる単位まで分解し、3~4人のスプリントチームを組んでやる
  • チームは設計・実装・テストといったすべての作業をモブプログラミング
    • 毎日、休憩挟んで5~6 時間程度
    • Slack でIDEの画面共有しながらヘッドセットで会話
  • 余った時間は小さなリファクタリングとか改善作業(余暇)

良かったこと

メンバーがさまざまなチームから引っ張ってきた製品横断の混成チームのため、全員ドメイン知識が異なっていたためモブプログラミングをすることで素早く知識共有ができる。

自分が乗ってる日でなくても、他メンバーがノリノリであればそれにあてられてやる気がでたりした。

モブプログラミングでやってるので誰かが休んでも、作業が止まらない。自分だけが抱えるタスクで心が重くなるという事がない。(個人的にはこれが一番大きい)

個人でプログラミングしてる時のようなつまらないハマりどころみたいなのは滅多に起きない。

レビュー時の待ち時間みたいなのがほとんど不要になる。

悪かったこと

時間を決めてタイムボックス内は集中してモブプログラミングをするため、その間は在宅勤務といえどもスッと席を外しづらい。

静かな環境で複雑な設計をするという事ができない(気がする)

大阪オフィスに出社する意義がなくなる(出社してもヘッドセットで東京オフィスの人と話し続けるので)