入社2ヶ月で参加したLinc'wellの開発合宿でプロダクトvisionを延々と語り合ってきた
はじめまして! Linc'wellのオンライン診療チームでバックエンドエンジニアとして働いている竹井です。
好きな食べ物はカルボナーラです!
私は今年 (2023年) の4月にLinc'wellに入社しました。
そして6月にLinc'wellの開発合宿なるものに参加してみました! 今回はその時の体験記を書きたいと思います。
開発合宿とは?
Linc'wellの開発合宿とは、1年に2、3回実施をしているもので、普段フルリモートで働いているメンバーも含めてオフラインで一箇所に (遠方の方も可能であれば) 集まりあれこれすることを指します。
コンテンツは毎回その時の組織の状況や課題によって変わります。
例えば前回はフロントエンドアーキテクチャ変更に伴いチーム編成も変わったタイミングであった (らしい) ため、プロダクトごとの現状理解のワークショップを重点的に実施したとのことです。
前回の開発合宿の記事はこちらです!
(1日目)フルリモートな我々が「開発合宿」で顔を合わせてやったこと ~バリューズカード、キャリア・アンカー、Toil~
今回の開発合宿のテーマは大きく二つです。
■一つ目は、日頃なかなか取り組めないような負債の解消や生産性向上のための開発をすることです。
プロダクトごとに日々改善は実施していますが、規模の大きさや複雑さによっては進みにくいものもあります。皆が集まる合宿という場でワイワイと雑談も交えながら改善のための開発をすることで相談しやすい空気を作り、効率的に改善活動を実施します。
■二つ目は、プロダクトに対してどう向き合うか。そして自分は何ができるかを考えることです。
各プロダクトチームの成熟度が以前よりも上がってきたということもあり、現状理解から一歩進め、プロダクトの中長期的な未来における理想像のすり合わせと、それに向けて各々が何をすべきかを考え、共有し合います。
今回開催された開発合宿は2日間を予定しており、それぞれのテーマを1日ずつ集中して扱う日としました。
ちなみに開発”合宿”と言いながらも泊りなどはなかったのですが、普段Google Meet上でしかコミュニケーションの取れないメンバーとも対面で会えることを楽しみにしていました。
懇親会も予定されていたので一緒にお酒を飲めることも非常に楽しみにしていました!
1日目
さて、そんなワクワクで楽しみな気持ちの中開発合宿の1日目がスタートしました。
1日目は生産性向上のための施策・実行にフォーカスしており、エンジニアメンバーのみで、いわゆるもくもく会みたいなことを行いました。
1日目のタイムスケジュールはこちらです。
最初に行ったのは、目的の共有です。
この記事の「開発合宿とは?」に書いてあるテーマの部分を再度エンジニアメンバーに共有します。
その後は、アイスブレイク。
これは「チームメンバーのことをもっと知ろーよ!」を目的としたもので、私自身4月に入社したばかりでもあり、この日に入社された方もいたため、こういう時間がアイスブレイクとして用意してあったことは嬉しかったです。
アイスブレイクの時間では、自分の得意なこと、不得意なことや、こういうことでテンションアガる! こういうことでテンションサガる……。を共有し合います。
私はこういったワークが結構苦手なんだと認識させられる時間でした……。
チームメンバーはめっちゃちゃんとしていたのに私は全然業務を絡めたコトが書けず……。
まぁそれもそういう人間性ってコトよォ。
その後は休憩を挟んで、もくもく会作業!
ここからは、それぞれエンジニアメンバーはそれぞれバックエンドチーム、Webフロントチーム、アプリチーム、QAチーム、インフラチームの5つのチームに分かれて作業を行います。
私はバックエンドチームで、バックエンドチームではそれぞれ自分のやりたい事を事前にNotionにつらつらと書いておいて、当日に自分はこれがやりたい! を発表してそれを担当する。もしくはチームを組んだりする。という流れで行いました。
私がまず担当したのは、一部の機能で使用されているCoffeeScriptからの脱却です。 過去に何度かやりたいねーなんて話には出ていた (らしい) が、結局手つかずで今まで残ってしまっていた部分です。 私はまだLinc'wellでCoffeeScriptな箇所を触ったことはないのですが、一部の処理でCoffeeScriptが使われており、これをJavaScriptに変換し直すという作業を行いました。 使用したのは 🐈⬛bulk-decaffeinate💾で、これは内部で🐈⬛decaffeinate💾を使っています。 READMEを読んでみたところ利用実績の多さもあり比較的安心して作業を行えました。 これらで変換処理をして、CoffeeScriptを使っている処理のテストを行いました。 🐈⬛decaffeinate💾 、すごい。かなりガッツリ処理を入れている箇所のチェックなどを行いましたが、ちゃんと動作している……!
私が担当していた箇所が結構アッサリ終わってしまったので、その後はRubocop改善を行っていた他の方と一緒に作業を行いました。
Linc'wellではRubocopを使ってLintのチェックをしているのですが rubocop_todo.yml が肥大化しており、1000行くらいあって色々なルール、色々なファイルの違反をスルーしちゃっていました。
このToDoを可能な限り失くすことと、そもそも今設定されてるルールってどうなの? の見直しをしていきます。
これらを適宜相談しつつもくもくと作業をした結果……。 rubocop_todo.yml の中身を300行くらい削り、だいたい1/3くらいは解消できました!! ルールの策定などは今後も引き続き活動をしていく予定ですが、一発目としては結構手応えのある改善を行えました。
一日ないくらいで300行削れたので、もう少し活動すれば rubocop_todo.yml は撲滅できるだろうし、ルールの策定もいけるイメージが付きました。
1日目のもくもく会はここまで。 もくもく会が終わった後は懇親会!! 皆とお酒を飲みつつピザを食べました! サイコーだぜ!!
2日目
2日目は台風が来ていたこともあり、大雨でした。大雨の中バスを待ち、10分くらい遅れてバスが来たと思ったら1本前のバスで遅刻を心配し始めます。
なんとかバスに乗って電車の乗り換えも完璧にこなして、開始10分前くらいにギリ到着。なんとか遅刻は免れることができました。
2日目のタイムスケジュールはこちら。
2日目は「プロダクトの将来について考えましょーよ!」な時間がメインなのですが、午前はエンジニアメンバーだけで昨日の成果共有を。
私が行ったCoffeeScript脱却、結構インパクトがあったのか他チームから「おぉ……!」という声も上がってました。嬉しい!
他チームもそれぞれ改善した内容を共有し合いました。
午後からはPdM/デザイナーの方も続々と到着してきます。
常日頃からプロダクトのことを考えているPdMからプロダクトビジョン・KPI・ロードマップなどの共有をしてもらいます。
その後は、Linc'wellのValueを絡めつつプロダクトビジョンをチームで共有し合ったり、考え合ったりなワークをしました。
まず、プロダクトビジョン・KPI・ロードマップなどの共有を受けた後は、プロダクトビジョンとLinc'wellのValueを絡めてどのような状態になるのが理想的かを考え、発表する時間です。
オンライン診療チームでは "共に身体に向き合い、変化に向かう伴走者" というプロダクトビジョンに対して、そもそもこのプロダクトビジョンって、どうよ? みたいな事を話し合いました。
「共に身体に向き合い」って、身体だけ? 心の方は? とか、「伴走者」ってわかりにくくない? とかを出し合ったりしました。
その後は、それぞれLinc'wellのValueである以下の4つ
PATIENTS FIRST
現場に寄り添い、患者視点顧客視点を第一にあるべき医療を創ろう
CHALLENGE STATUS QUO
既存の常識に常にチャレンジしよう。新たな価値は常識の外にある
RESPECT DIVERSITY
多様性を尊重しよう。チームでしか出せない価値がある
COMPLETE WORK
諦めないでやりきろう。答えを待っている人がいる
これらそれぞれのValueから見たときにどういう状態になっているのが理想なのか。どういう状態になっていればプロダクトビジョンを体現できているのか。を考えて発表し合います。
例えば私は RESPECT DIVERSITY としては「どんな人でもどんな症状でも相談できる状態」と出しました。
より多くのユーザーをターゲットに、より多くの範囲の人がクリニックを使える状態であれば「多様性」の部分はクリアできそうかなー? みたいな。
他にも CHALLENGE STATUS QUO としてだと「医療を意識しなくっても良い状態」というのを出しました。
現在オンライン診療だったり対面診療だったり様々な課題を解決しようとしていますが、常識とか取っぱらうとそもそも医療を意識しなくっても良い近未来SF映画とかでありそうな状態になってるのが最THE高なんじゃね? みたいな……。
他にも案を出したり、チーム内の他のメンバーも様々な案を出したりし合いました。
これらが終わって一度休憩を挟んだら、次は↑で出したそれぞれの行動について、例えば私であればバックエンドエンジニアだとどれが行えそうか。どういう仕組み、機能があればそれを実現できそうかを考え合って出す時間です。
「多言語化」はバックエンドでできるかな? や、より多くのユーザーを受け入れるならサーバ増強したり、4G回線のない地域からのアクセスも想定するともっとフロントを高速化しないとキビしいかも? これらはSREチームやフロントエンドチームと協力しないと難しいかも。みたいなものを考えて出していきます。
これが終わったら再度休憩。
休憩後は、じゃあ個人としてはどの領域・テーマに関わっていきたい?
それは何故? 自分の強みとか興味を交じえて発表。の時間です。
私は細かい改善だったり、フローを自動化してよりチームの効率が上がるような仕組みを作ったりすることが好きなこともありそれを絡めてこれに興味がある! みたいなことを挙げました。
最後はそれぞれ個人で得られたこと、チームで得られたことを発表して終了です。
そして2日目の懇親会はPdM/デザイナーの方も含めての懇親会!
美味しいものを食べつつ美味しいお酒も飲めて幸せでした〜っ!
感想
はい! Linc'wellが6月に行った開発合宿の記事を書いてみました。
結構長文になってしまった……。内容ギッシリでボリューミーな開発合宿でした。
1日目に私が行ったCoffeeScriptのものは、他チームにも確認をお願いして協力しつつ進めていくことになるので今後も続きますが、今までなかなかメスを入れられていなかった箇所にメスを入れられたし、Rubocopについても今後のビジョンが見えたのでハピハピです!
また2日目のプロダクトについてあれこれ考える時間についても、私が長期的な視点で物事を考えることが苦手なこともあり、チームでワークできたことでプロダクトについてもっと考えるきっかけにもなったし、私の普段の開発がどうプロダクトに貢献していくのかもイメージが付いたのですごく意味があったと思うし、得られたものは大きく感じました。
合宿の内容がガリガリ業務的な開発を集中してやるぞー!!ではなく、普段あまりできない技術負債の解消やプロダクトの将来について皆で考えましょーよ! みたいなことだったので、個人的にはこういう時間ってやっぱり普段の業務時間内では取りにくいし、なかなか振り返りにくいことなのかなと思うので、すごく貴重な体験となりました!
また、開発合宿自体については合宿後にフィードバックアンケートを取り、いくつか改善点も見えてきたのでこの場で共有させて頂きます。
対面ならではのコンテンツを拡充する
今回、収まりの良さを考慮し、オンラインでも問題なく実施できるコンテンツがありました。普段は皆リモートで仕事しており、たまにしかない対面で集まる場なので、可能な限り対面でしか実施できないようなコンテンツに絞るべきだと感じました
議論しやすい環境を作る
以前と比べてかなり組織の人数が増えたので、議論する場では盛り上がりも大きく、部屋が終始ガヤガヤとしていました。より意味のある議論をするためにも、部屋を分ける等、議論しやすい環境だとより良かったかなと思いました
アンケートの中で、今後やってみたいコンテンツのアイデアもたくさん出していただきました。
概ね全てのコンテンツに対して高い評価ではあったのですが、組織を良くするために積極的に意見を出せる文化も根付いており、こういう点についても働きやすさに繋っているのかなぁと感じています。
今後も、強いプロダクトそして強い組織作りのためにより良い合宿にしていきたいと思いました!