見出し画像

【札幌 11/10】モブプログラミングでノウハウ共有しよう!に会場提供しました #javado

こんにちは!サイボウズ株式会社 開発本部 People ExperienceチームDeveloper Councource Unit(以降DCU)の貴島(@jnkykn)です。DCUは、エンジニアの成長や情報の流通を軸に活動をしています。今日は、【札幌 11/10】モブプログラミングでノウハウ共有しよう!に会場提供しつつ、参加しました。

モブプログラミングの効果について考える

今回は、久しぶりに西原(@tomio2480)さん&貴島のDCUフルメンバーで参加しました。日頃、道外を飛び回っているサイボウズの飛び道具の西原(@tomio2480)さんが会場提供の対応をする勉強会は、かなりレアと言えそうです。

モブプログラミングの意義について、考える

同じ場所、ひとつの画面で、みんなで議論しながら課題を解決するための「モブプログラミング」。課題解決までの期間を短縮できたり、知識を共有しながら進めることで、チームが成長できる等、思いつくメリットはいろいろあります。2名なら、ペアプログラミングなので、モブプログラミングは3名以上で。今まで気にしたことがなかったのですが、ペアプログラミングの場合は、2人の関係性による影響があるので、モブプログラミングの方が心理的安全性が保たれるようです。確かに、メンターと2人でペアプログラミングするシーンを考えると、「メンターがこう言っているから、そうしよう」とか、ふんわりとした力関係の影響を受けることもありそうです。こうした影響をできるだけ排除した方が、本来の効果を活かせるというのは、説得力がありますし、実感も湧きます。

言葉の定義の大切さ

モブプログラミングの各役割の表現には、「ドライバー&ナビゲーター」、「タイピスト&モブ」のように、様々な流儀があります。サイボウズでは「主にコードを入力するドライバーと、助言をするナビゲーター」とすることが多いです。JavaDoでしょう主催の山川先生の場合は、ドライバーではなくタイピストという呼称を大切にしていらっしゃるようでした(タイピストは能動的に行動せず、みんなの意見を反映する人。モブは、質問する人)わからないことは、わかるまで質問する。というところは、呼称に関係なく、心構えとして重要だなと思いました。特に、タイピストのミッションは、モブの全員の合意がとれた操作やコードの入力を担い、タイピストは自我を持たないという定義は、それぞれの役割を明確にする上で重要だと感じました。

モブプログラミングならではのふるまい

最初に山川先生から、以下の注意点のご説明がありました。

  • ゴールが達成できたら、みんなで喜ぶ。

  • 内職しない。

  • 調べる必要がある場合は、モブと分けて調査時間をとる。

  • 個別作業しない。

  • ゴールは小さく設定する(細かく分けて、小さいゴールを重ねることで「うまく進んでいる実感を得る)

  • 質問は、コードに関すること以外にツールの使い方などもOK。

  • 質問する人はえらい。

  • 心理的安全性のため、経験者は発言しやすい雰囲気づくりを心掛ける。

  • モブの小さいゴールが達成できたらgit commitするなど、gitをうまく活用できると良い。

  • タイマーが重要。時間超過が、モブプログラミングのリズムを壊す。

グループに分かれて実習する

実は開催前に、西原(@tomio2480)さんと、今日の実行環境を試してみました。二人でVS CodeにLive Shareプラグインをインストールして試したのですが、Live Shareの共有機能が強力すぎて、「これは社外の人とLive Shareしてしまうと、社内の情報にアクセスできてしまうのでNGでは?」という結論に至りました。VSCodeのLive Shareでは、共有リンクを送った人にシェルコマンドまで許可してしまうことができるので、共有リンクを送った相手には、自分のPCの中身が丸見えです。この機能は「お互いに信頼できる」という前提がなければ使えないなと思いました。(少なくとも、社外の人とつなぐ場合は、別途VMを起動するなど工夫が必要)というわけで、我々二人はモブプログラミングには参加せず、観察者&会場提供のための責務を果たすことに注力しました。

実行できるかな?

今回はJavaで環境&プロジェクト構築、実行をする演習だったのですが、Javaの開発環境構築でつまづきがちなポイント以外にもうまく進められない様子も見られました。それでも、小さなゴールを設定することで、「やったー!」と声を上げたり、万歳をしたりしてチームでゴールを喜び合う声が聞こえてきました。初めてのモブプログラミング体験としては、開発環境構築が不要なレベルの簡易的な開発でも良いかもしれないなーと思いました。言語について学ぶだけであれば、もう少し軽量化できそうな気もします。(そんな気がするだけかもしれませんが…)

山川先生からは、例えば、こんな課題も考えられます。と、いくつかのモブプログラミング課題を提示されていました。

#javadoの当日の様子は、ハッシュタグ「#javado」をチェックしてみてください。

ちなみに、今回も女性4人+私=5人 17人中5人が女性という割合でした。また、参加者の属性としては、Java言語開発エンジニアに限らず、フロントエンドエンジニアなど幅広い分野のエンジニアが参加しました。

4つの班に分かれて演習をしたのですが、山川先生から「最後に、楽しかったこと、できたこと、学んだことを共有して終わりましょう」とまとめの言葉があり、チームで話しながらmiroに書き出していきました。環境構築で手間取ったチームがあったり、完遂できなかったチームもあったのですが、最終的には「よかったこと」「できたこと」「学んだこと」を共有して、「確かにそういうことあったね〜」と、交流が進みました。次回は、今日の学びを活かして、もう少し有効な情報交換ができたらなぁと思いました。

まとめ

今回は、実習に参加できなかったのが少し残念でした。次回モブプログラミング会があったら、私物PCを持参して参加して、その環境で環境構築できるようにしたいと思います。(Javaの開発環境構築のハードルを下げたい)

まだまだ書きたいことはありますが、ひとまずここまでにします。お疲れさまでした!

  • 更新履歴

    • タイポ、不自然な言い回しの修正(2024-11-11)

いいなと思ったら応援しよう!