遠隔学習アンサンブル(MOBプログラミング)


遠隔学習アンサンブルを走らせる方法


私が過去数ヶ月間実行しているアンサンブル(MOB)プログラミングセッションは、テスト駆動開発(TDD)、ドメイン駆動設計(DDD)、および六角形のアーキテクチャで開発者のスキルを改善することに集中しています.CodeBaseはJavaであるため、すべての参加者がIntellijのアイデアを使用していることが判明したので、追加のフォーカスは、そのショートカットと、より一般的な自動リファクタリング(移動メソッドなど)を学んできた.
フォーカスは学習スキルではなく、“仕事”を行っていないので、私は主に回転して、主に観察し、途中で指導やアドバイスを提供してきた.私も開発されている機能に“顧客”の方向性を提供しています.
以下は、私が現在学習アンサンブルを実行する方法についての情報を見つけるでしょう(この多くは様々なソースから集められました、いくつかは適応しました、そして、いくつかは試行錯誤によって学びました).
私はgithubベースのハンドオフを使用して、mobを使用して発見した.sh、私が試した他のメカニズムよりよく働くために.それは人々が彼ら自身のコンピュータとIDEを使うのを許します.そして、それは彼らが彼らが慣れている道具を使って快適であるだけでなく、彼らの「自然な」環境で技術(例えばショートカットキー)を造ることを意味します.欠点としては、手を離している間に混乱が起こっていることが主なことです.主に新しいドライバーが引き継がれたり、編集者のウィンドウを再配置したり、ファイルを開く必要があります.

役割


キーボードの人を「ドライバー」と呼び、人を「ナビゲータ」と指示する.私はロール名について行ったり来たりして、“ドライバー”と“ナビゲータ”との目的地に到達する比喩はよく適していることを発見した.

ドライバ

  • ときにあなたのターンを開始すると、明確には、“私は準備ができてナビゲータの準備ができている状態”
  • ドライバはナビゲータの意図を実行します(ナビゲータが1つだけです.そうでなければドライバは混乱します).
  • ドライバーが次に何をすべきかわからないなら、彼らは明確化を求めます.
  • ドライバが選択を提供するのに役立つことがあります.
  • ドライバーが何を尋ねたか(または異なるものから)をする「暴走ドライバー」を避けてください.
  • ナビゲータ

  • ドライバーが尋ねるならば、より詳細を提供するだけで、最高レベルで意図を宣言します.
  • 「トランザクションを作成する新しいメソッドにループを展開」
  • 24行目を選択して、Refactorを使用してメソッドを抽出します.
  • 詳細については、“行の24”のための単語をクリックして、数回の拡大選択キーを押してください
  • 構文エラーや誤植の修正を管理しないようにしてください.
  • ナビゲータによって混乱または誤報のために、ドライバーがドライバーが何が望ましいかをしなかったならば、ドライバーを訂正することは重要です.
  • コミュニケーションは難しいです、そして、ナビゲータが彼らが理解されたということを知っている唯一の方法は、ドライバーが何が望まれたかをしたかどうかです.
  • ターンが終了すると、あなたが念頭に置いていたものの次のナビゲータに通知しますが、それはその道路を継続するか、何か他のことを試みるためにそのナビゲータにです.
  • 新しい参加者

  • GitHubのユーザ名を取得する
  • リポジトリにユーザー名を追加する
  • 彼らは招待を受け入れる必要があるだろう
  • 参加者は、インストールし、確認する必要があります
  • 暴徒.sh
  • ズーム、特に共有画面の特権
  • オーディオチェック、ビデオチェックはオプションです
  • どのようなIDEでも快適です
  • 画面の共有可読性のための少なくとも16 pxにIDEのフォントサイズを増やす
  • Java ( 11以降)の正しいバージョン
  • 可能ならばSSH経由でリポジトリをクローンします(これはプッシュを容易にします).
  • ファシリテーター

  • 暴徒タイマーで名前を記入してください
  • 使用するhttps://mobti.me
  • 人々は常に同じ順序ではないし、同じドライバをナビゲートしているので、回転するようにしてください
  • 参加者がgithubレポ招待を受諾したことを確認する
  • リポジトリが最新のコードを持っていることを確認します
  • 過去のセッションからの回顧と任務メモレビュー
  • 私はこれらのノートをプロジェクトコードと同じリポジトリに保管します
  • 次のセッションの目標(これを「ミッション」と呼ぶ)をクリアする
  • 我々は(それが同じものであっても、アラームを必要とする人々)を使用しているズームにリンクを送信する
  • セッション


    これは私の経験に基づいています.我々は、5分のターンの時間で、5アクティブな参加者にサイズをキャップします.ドライバとナビゲータの2つの主要な役割があります.ターンが終わると、ナビゲータは新しいドライバーになります、そして、ドライバーは一般的な群衆に戻ります.群衆からの誰かが失われるならば彼らは質問をすることができます、そして、必要に応じて、アンサンブルは「抱擁」に入ることができます.

    議題

  • 新人紹介
  • 暴徒タイマーのリンクを提供します
  • あらゆる行動規範の人々を思い出させる
  • 最小限で、これは学習経験であり、同情的で好奇心旺盛であることを思い出させる

  • を作成するparticipants.txt ファイルを日付で、ファシリテーターの名前を0番目のエントリとしてリストを起動します.例えば、
    Session #10 - Friday, May 28, 2021
    ----------------------------------
    0. Ted (@JitterTed)
    

  • それぞれの参加者が自分のターンで次のことを行うことによって1回転します(注:これは画面を共有する能力を行使し、レポのローカルコピーを更新し、REPOへの変更を押すことができます.
  • 画面を共有する(私は、ズームは、参加者は、現在のシャーから画面を共有する“盗むことができることを確認します.”
  • それが完了すると、"mob start "を実行します.
  • 入力した名前をparticipants.txt ファイルが表示されない場合、または時代遅れの場合、何かが正しくないことを知っている
  • “mob next”を実行し、いったん完了したら….
  • アナウンス"次のドライバの準備"
  • 皆がターンをするまで繰り返します

  • セッションのミッションを説明する
  • プロジェクトコードと同じリポジトリ内のテキストファイルに保存します
  • チームは「抱擁」を行い、ミッションを話し合い、それを理解し、次のタスクか2つを定義します.
  • 最初のドライバは、画面を共有し、“暴徒スタート”を行うとき、それは完全な宣言“私は準備ができている”
  • ナビゲータはドライバに指示を与える
  • ターンが完了すると、ナビゲータは、次のナビゲータに意図(何を達成しようとしていた)を中継します
  • 行う必要がある(テストを削除し、そのクラスの名前を変更し、Flakyテストを修正)チャットにドロップされます
  • 仕事についてのサイドコメントもチャットに落とされます

  • 各フルサイクル(全員が一度自分のターンを取った後)、アンサンブルが“ミニ回顧展”を実行すると、アンサンブルが良い流れにあると感じた場合、ミニレトロをスキップすることができます.
  • しばしば2回目の時間、人々はミニレトロを再編成して、展望を得る必要を感じます.
  • 最終的なターンは、15 - 20分が予定されたアンサンブル時間に残されるとき、終わります.
  • 回顧展では、誰もが言うまで物事が実行されるまで回転の一人一人が観察を提供すると結論.それから、多かれ少なかれ、何がうまくいったか、あまりよくないことをすることはアウトラインまたはマインドマップで注意されます.
  • ファシリテーター株式の観測(具体的かつ具体的な、より良い)などのように“私はそれが最終的に赤から緑になる”または質問などのような質問、例えば“どのようにして、そのテストをフレーク”、または“その方法で貧しいコードの書式設定に不快感を誰も残して感じていた?”
  • セッションは、保留中のタスクのクリーンアップ、チャットから未完了のものを収集し、それらをチェックして終了するなど.
  • 誰でも、さよならを振ります!
  • 我々が我々の回顧録で育ったもののため、我々が時間とともにアンサンブルを走らせる方法を変えた点に注意してください.私は、上記が書かれた時から何が変わったかについて、ポストに続きます.つの些細な変更は、ドライバナビゲータの順序でした.我々がその順序を交換したとき、我々は意図を「手を離す」必要性のより少ないのを発見しました.
    ステイ!