Skip to content

Instantly share code, notes, and snippets.

@niku
Last active November 11, 2019 09:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niku/04567b899bf3841125cd255b5982e0c9 to your computer and use it in GitHub Desktop.
Save niku/04567b899bf3841125cd255b5982e0c9 to your computer and use it in GitHub Desktop.
ふつうのプログラマたちはいいチームを作り維持することができるか

ふつうのプログラマたちはいいチームを作り維持することができるか

私たちをとりまいていた状況

組織

  • ファームノートについて
  • 2013年11月設立(7年目)
  • 主にIT技術を用いて、農業特に畜産にまつわることをよくしようと努力している
  • 当初 5 人 -> 現在 50 人以上へと拡大
  • 解決したいことは、プログラマには馴染みが少ない(ものもある)
  • 自社でプロダクトを作っている
  • コードは増え、急成長の代償としての歪みはまだ残る

2019年1月の変化

  • 組織構造が変わり、札幌にいる同業態のプログラマが同じグループにまとめられた
  • 私たちが作ったものを価値に繋げる役割の人は東京に
  • 変更直後は関連している別のことを3人がそれぞれ並行して行っていた
    • 必要があれば相談にのる
    • コードレビューのときに同期する

関係者

  • マネージャー riki さん
    • 東京にいる
    • ここ1年くらいのあいだにプログラマからマネージャーになった
  • プログラマ mohya さん
    • チームリーダー
  • プログラマ iakio さん
    • 業務委託という契約形態で参加していただいている
  • プログラマ

モブワーク

解決したかった悩み

  • 作っているものをプロダクトに合流させて役立てるまでの時間が長い
  • 私がこの組織で役立っている実感がない

悩みの対策として考えたこと

  • 作っているものをプロダクトに合流させて役立てるまでの時間が長い
    • 短かくしよう
  • 私がこの組織で役立っている実感がない
    • 対策がわからなかった
    • この時点では目をつぶった
    • (結果的にはなんか解消されてた)

作っているものをプロダクトに合流させて役立てるまでの時間を短くするには

  • 歴史的経緯と専門性のため各コードが難解
    • 読みとくのに知識が必要
    • 人によって知識がまだら
      • 知識が少ない人は実装が遅くなる
      • 知識が少ない人はレビューが遅くなる
  • 全員でやると、知識を補完できるから、着手からお客様へ役立てるまでの時間を短くできるのでは?

始めたときのポリシー

  • 「やめたくなったら、やめますか」
  • やるものを限定しない。全てを同じやりかたで試す

どう進めているか

どれを進めているか

  • プログラミング
  • 運用
  • 仕様決め
  • バグ調査
  • 別チームのプルリクエストレビュー
  • Slackの返事
  • ドキュメント書き
  • 打ち合わせ
  • 休憩
  • (1on1以外の全て)

モブワークってどう?

  • モブワークは何かを達成するための「手段」であろう
  • 何を達成したかったんだっけ?
    • 直接の関係者がうれしくなればとりあえずよかろう
      • モブになっているひと
      • モブから価値をうけとるひと

モブになっている人たちから価値を受けとるひとの感想

  • 定期的にメンバー評価面談というものがある
  • メンバー評価面談でかつてないほど感謝された
  • それまではそんなに褒められたことがなかったから、チームになってうまくいったのだろう
  • チームとしてやってほしかったことが達成できていたらしい

モブになっている人の感想

4ヶ月くらいモブワークしてみたけど、なかなかいいよ、っていう話

課題解決にあたっては解決までの道のりが遠く、すぐには成果がでないけれどそれでも地道に取り組みを進めていかないといけない場面というのがあります。これはソフトウェアエンジニア的には「ヤクの毛刈り」などという表現で呼ばれているものとほぼ同じ構造です。 最近、僕たちのチームではこれを農業になぞらえて「開墾」と呼んでいます。

もしかすると僕たちが進んで荒地を開墾していくことは、これまで考えていた以上によい効果を生む可能性があるかもしれないと考え始めています。

最近読んだビジョナリー・カンパニー2という本に「弾み車を回す」という概念が出てきました。何かを始める時にはなかなか成果が見えないよう見えるが、ずっと力をかけ続けていくと最終的には勢いが勢いを生み、良い循環を作ることができる、というような話です。

「開墾」作業は弾み車の話と同じようにすぐには成果がでません。また、現時点で弊社や僕たちのチームが置かれている環境では「開墾」が必要な状況は決して少なくありません。

モブプログラミング(モビング)をやってみて

何をしたらいいのかさっぱりわからないということがほとんど無くなったし、これ以上できることは無いと思ったときも、何か他にできることが無いか、という「もう一押し」の案が出てくる。

これを知っているのは自分だけという不安から解放された。明日休むからこれお願い、みたいに休みを取るときに引き継ぎをする必要がない。休んだ日にslackを気にする必要もない。休んでいる間に自然に自分の仕事が進んでいる

常に複数人で課題に取り組む

普段私が一人で何かに取り組んでいるときにこういった困難な問題にどう対処しているかというと、問題にあたったらそのことを思いながらも一旦距離を置き時間をかけて寝かせる。 すると新しい気分のときの私が何かを思いつくというものだ。

三人でやっているときはこの新しい気分のときの私が二人後ろに控えているようなものなので、時間をかけて寝かせるという部分が必要ないのだろう。

ふつうのプログラマがいいチームを作り維持できているか?

ふつうのプログラマにもできそうなやつ

  • この技能を持っている人は多いかもしれないし、今は生かしきれていないかもしれない
  • 「チームになろう」ともちかけて、みんなでチームになろうとし続けるだけでいい
    • 「私が思っているチームなら、こうなんだよね」「じゃあそれやってみるか」

なんでいいチームを作り維持するのが大事だと思っているか

  • CinnamonのHirano Mikuさんもおっしゃっていた、人間が幸せであることも大事なやつだよね
  • 組織、組織にいる人双方の健康のため
  • 組織の健康とは?
    • 組織を作った目的のために進めていること
    • 組織が維持できるだけの金銭的価値が生じていること

チームの中の人がいいチームと感じること

  • 人が幸せになるために必要

チームの外の人がいいチームと感じられること

  • 人が幸せでいられる場所を維持するために必要

ふつうのプログラマがいいチームを作り維持できているか?

  • わたしたち自分のことふつうだと思っている
  • チーム内、チーム外双方からいいチームだと思われているようだ
  • 1年弱続いている
  • できていると言えるんじゃないかなあ

この1年チーム活動で感じたこと

相手も、人間だ

  • 自分たちがやりにくいと感じていること、だいたいの場合相手が悪意でやっているわけではない
  • 組織形態ですら、誰かが良くしたいと思ってやっていることが、誰かを苦労させている
  • 相手のインセンティブについて知る
    • 「そういう理由で、こうなっているんですね!じゃあ仮にこんなやり方だったらどうですか?」

ホワイトリスト方式からブラックリスト方式へ

  • 最悪知っている技術で期日までに何とかなることがわかっている状況では
  • よく知らない技術、やり方を「うまくいかないかもしれない」と避ける
    • よく知っているものしか使えない。今はいいけどどうやって成長しよう?
  • よく知らない技術、やり方のうち、「これは現状うまくいかないな」と言えそうなやつ以外を候補にする
    • その中で知っているものではなく、知らなそうなものを採用してみる
    • 知ることができて、何ならやりたいこともうまくいってしまう

自分たちを変えるのを厭わないといいかもよ

  • 「何か変えて欲しいことないですか?」「私たちに不満ないですか?」と聞いてまわる
  • 相手を変えるより、自分を変えるほうが簡単だったりする
  • 全体がうまくいくなら、それはそれで私たちにも恩恵がある

いい偶然を見つけて形にすると、急によくなるよ

  • 主たる目的を果たそうとしているときに「なんかうまくいったね」「なんかうまくいかなかったね」という副次的な成果が出てくる
  • 副次的な成果のうち、うまくいったものを逃さず見つけて、形にする
  • チームができたのは狙いではなく、複数の偶然が重なったものだった
  • 仕事でもセレンディピティっておきるんですねえ

チームの人格というのがでてくるな

  • チーム内のどのメンバーより真面目な人格になってしまう
  • 視野が広い
  • 正論を言うだけでなく、正論を元に業務を遂行できるように業務改善できてしまう
  • 王道をいく

おれたちのプログラムを生かすには

  • RakutenのHamanoさんもおっしゃってた、作るところ以外も考えるというのがいいよね
  • できれば自分たちが役にたっていると信じられるものを作りたい
  • プログラムの実装・運用は、価値をお客様へ届けるところの一部
    • 企画
    • 品質保証
    • 監視・運用
    • セールス
    • サポート
  • 同じ労力をかけて役にたちそうなら、おれたちがプログラミング以外のところを良くしてもいいよね

断わられるところが境界だとわかる

  • 「これ頼むのダメかもしれないからやめとこ」
    • 想像上の境界に基づいて仕事をしている
    • 相手は別にかまわないと思っているかもしれない
  • やめときたくなる理由
    • 断わられると心が痛む
  • 複数人で合意してから頼みにいくと……
    • 痛みがなんか小さいからダメもとで頼める
  • ジャ・ジャン: 100日間拒絶チャレンジで学んだこと

ジョブクラフティング楽しい

  • 思いついた仕事のすすめかたをある程度の裁量をもって試させてもらえる
  • 「チームになってみていい?」「結果が出るならやり方は問いません」
  • 難しさを自分たちで定めるのは楽しい
  • 成果がよくでる「チームにちょうどいい難しさ」というのがあるはず
    • フロー状態になりたい
    • ちょうどよい難しさのときになれる

全力というのは全ての能力を使うということ

これからの挑戦

  • チームメンバーを3人より増やすこと
  • チームを株分けして似たやりかたの新しいチームを増やすこと
  • チームメンバー、プログラマだけじゃなくすること
  • チームメンバーがやりたいと言う限り続けられるくらい、チームの周りにいい影響やいいことを提供し続けること
  • 状況が変わって、チームメンバーが解散がいいねとなったら、解散できること
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment