MedUpで知った、本当の「リーン開発」とその取り組みとは?
初めまして!エンジニアの田端です。
MedUpには今年の4月にジョインし、主にforoCRMのフロントエンドの開発を担当しています。
新入社員あるあるかもしれませんが、入社直後のメンバーは広報インタビューなどで「入社前後のギャップはなんですか?」と聞かれることがあります。
私はその都度、思い浮かんだことを答えていましたが、入社から数ヶ月経た今、改めて入社後の最も大きかったギャップについて思い返してみました。
色々と特徴的なMedUpライフですが、特に印象に残っていたのが「リーン開発」に対する取り組みです。
私は前職ではSESとしていろいろな現場に参画していたため、アジャイルやリーンを開発スタイルとして謳っているチームで働くこともありました。
しかし、MedUpに入社してからは、チームで開発することに対するこだわりや工夫で驚くことが多く、今では自分がやってきたのはとてもリーンな開発とは言えなかったなと思っています。
今回は、いわばなんちゃって「リーン開発」をしていた私から見た、MedUpの開発プロセスを良くするための取り組みについてご紹介していきます。
ここが違った!リーン開発の土台となる考え方
まず、私はリーンな開発の土台となる概念を知りませんでした。
よくあるパターンかと思いますが、
以前の私は、スクラムを組んでスプリントの振り返りをしたり、タスクをチケット化したりといった施策をしただけで、リーンな開発を実践できているものと思っていました。
そんな私のMedUpでのリーン開発は、以下の2つの考え方を自分にインストールするところから始まりました。
1. フロー効率を優先する
「フロー効率」を優先してタスクを進めるという考え方は、開発に対する自分のスタンスで最も大きく変化したポイントになりました。
フロー効率とは、タスクに対して、どれくらい価値を付与しているか?具体的には、開発中のタスクを前に進める時間の割合を指しています。
対比する概念としてリソース効率があり、これは一般的によく言われる「効率」の概念に近いと思います。
これまでの私は、個人が忙しく働くことや、相手の効率を下げないように工夫しようなど、人(リソース)を主語としたリソース効率の意識だけを持っていました。
そのため、何か聞きたいことがあっても、チームの仲間に迷惑をかけないように遠慮してしまうこともあり、結果としてタスクが開発プロセスで滞留する時間が増えてしまっていたように思います。
しかし、タスクを主語にしたフロー効率の考え方を意識するようにすると、早く新機能リリースするために自分以外の力を使ってでも試行していくオーナーシップを持てるようになった気がします。
2. チームでタスクを前に進める
関連してもう一つ大事な考え方として「タスクはチーム全員のもの」というものがあります。
タスクをチケット単位に分解して、カンバンで管理することは過去に私も経験がありました。
しかし、チケットが個人の責任に閉じてしまっており、タスクに対してどう優先順位をつけるか、リソースの融通をするかといった話はできていませんでした。
MedUpの開発チームではチケットのアサインは個人に紐づいているものの、責任はチーム全員で持っています。
「フロー効率」にせよ「チームでタスクを前に進める」にせよ、今まで蓄積してきた働き方や常識をアンラーニングする体験を仕事を通じてできたのは、個人にとっても財産になりました。
こうした考え方はエンジニアに限らず、ビジネス系の他の職種でも応用できそうです。
実際に感じたMedupでのリーンな開発体験
リーン開発の土台となる考え方を、日常の具体的な施策に落とし込んでいくことも開発メンバーには求められています。
「フロー効率」や「チームでタスクを前に進める」の概念を踏まえて、実際に開発プロセスで具体的に行われていることをピックアップしてみます。
1. 文化の醸成
MedUpでは、フロー効率に重点が置かれているため、常にタスクを最短距離で終わらせること、滞りの原因を無くすようにチームで協力しあう文化ができています。
例えば、レビュー状態にあるチケットは最も完了に近いタスクである(滞りの原因でもある)という認識がチームで共有されているため、プルリク通知があるとすぐに確認するようになっています。
他には、進捗で困っていそうなプロジェクトがないか日々相談しあったり、slackで質問しやすいように空気を作るなどよくある取り組みも押さえつつ
個人に責任を閉じさせないようにチームを主語にした振り返りをするなど日常的な振る舞いにも意識を巡らせています。
2. 仕組み
また、MedUpでは文化の醸成みならず、リーンな開発を改善し加速させるための仕組み化も行っています。
PJあたりのタスクチケットの流れや依存関係をマップ化して、オープンに可視化しています。
進捗状況やリリースまでの道のりや、他のチームが切り出して手伝えそうなタスクなどがが一目でわかるようになっています。
図)タスクマップ(初期簡易版)
また、開発チーム全体のリソースやリリース時期を可視化して、PJ間でお互いにリソースの融通を利かせやすいような工夫などもあります。
こうしたオリジナルの仕組みをチームメンバーで提案→実行しながら、日々開発プロセスを改善しています。
リーンな開発組織を構築・維持するための取り組み
ここまでMedUpのリーン開発に関する取り組みについてあれこれ書いてきましたが、気を抜くと今までの考え方に戻ってしまう時もあります。
リーンな開発文化をどう作っていくか、保っていくかということにもMedUpの特徴が表れていると言えます。
1. 振り返り
チームの開発生産性を指標として、スプリント振り返りを行っています。
KPTをベースとしつつ、よりチームとして生産性を上げる取り組みができないか模索しています。
目標まで到達できなかったPJがあった場合、「チームとしてサポートできなかったか?」というワードが声かけの中で出ているのも、リーンな開発組織を維持するのに一役買っているかなと思います。
メンバー同士が「リーンおじさん」として見回る役割を担っていることも、リーンな開発文化を支える大きな要因です。
図)開発文化に沿う行動は振り返り会で褒めてもらえます。
2. 読書会・勉強会
MedUpでは全社的に勉強会が活発に行われています。
開発チーム内でも、知識の底上げと開発に関する認識合わせの目的で、読書会を行ったりもしました。
以下の書籍を使って、「フロー効率」などの概念的な部分をキャッチアップしていきました。
読書で知識を取り入れつつ開発で実践する流れができているので、チームとして共通認識を持ちながら開発できています。
終わりに
「リーン開発」への取り組みをテーマに色々とご紹介してきましたが、思想から日々の振る舞いまで一貫していることがMedUpの良いところかなと思っています。
土台となる概念が当たり前のこととして認識共有されていることで、メンバーにとって働きやすい環境を実現できています。
一方で、振り返ってみると、日々の意識的な積み重ね無くしてこうした環境を維持・発展させていくことはできないことが理解できました。
私も、開発チームの生産性に貢献できるように日々知識とアクションを積み重ねていきたいと思います。
We're hiring
開発チーム含め積極採用中ですので、下記よりお気軽にご連絡ください!
https://jobs.medup.jp/