【非同期計画】非同期で作業する必要があります

remote

非同期作業は、作業のパイプラインでタスクが実行される順序を整理する方法です。

作業を微調整できるため、プレッシャーが均等になり、タスクが迅速に完了し機敏に動作します。

迅速かつ軽快パイプラインは、その要件のために出力の正確に正しい量を生成し、そのすべての段階は、効率と速度の点でバランスされています。

その結果、時間やリソースが無駄になりません。

これは、トヨタ生産システム3Mの方法論にインスパイアされています。

詳細については、こちらをご覧ください。

非同期作業は、多重化・通信・アクションという 3つの主要な原則に依存しています。

多重化

人間は同期の世界に存在し、私たちは一度に1秒ずつ前進する時間に縛られています。

しかし、物事を行う方法(または物事をまとめる方法)は、パイプラインの結果に非常に大きな影響を与えます。

それはすべて計画なのです。

同期計画

一般的な(同期)計画は、物事を一括して開始することに依存しています。

それ自体はひどいことではありませんが、システムは最も遅い要素と同じくらい遅くなります。

この場合、各ステージはその前のステップに完全に依存するため、遅延はパイプラインを介して伝播されます。

例1
例1

このイメージは、同期計画で編成された3つの、ターミナルソフトウェア開発パイプラインを表しています。

機能を展開するには、タスクA、B、Cを完了する必要があります。

これらのタスクが計画および分散された方法を考えると、展開ごとに9労働時間のサイクルが必要になります。

これはアトミックタスクには適していますが、それ以外の場合は非常に遅いため、頻繁にしかデプロイできません。

非同期計画

非同期計画は、できるだけ小さなタスクでタスクを中断し、可能な限り頻繁に最小実行可能変更(MVC)をリリースすることに依存しています。

この手法は、出荷回数を減らしてより頻繁にすると、成功を測定し、負帰還を可能な限り迅速に打ち消すことができるという仮説に基づいています。

また、同じサイズでより多くのタスクを実行できるため(サイズが縮小されているため)、リソース割り当てをよりきめ細かく制御できます。

例2
例2

この例では、タスクA、B、Cを(A1、A2、A3、B1など)に分けることで、前の例(M1)の3倍のデプロイを達成しました。

この例では、9時間の終わりに同じ量の機能が展開される可能性があります。

非同期タスク分散でタスクを多重化することで、タスクのサブセットをリリースでき、その影響を検証できました。

次のステップを、ロールバックまたは再評価します。

反復時間を、元の計画の3分の1に短縮しました。

この方法により、タスクを多重化し、それらを組み合わせて結果をより迅速に生成できます。

コミュニケーション

良好なコミュニケーションは、システム(人間または機械)の成功の鍵です。

通信には、「電子メール・メッセージ・音声通話・ビデオ通話・コーヒーを飲みに行こう」など、さまざまな種類があります。

それぞれが生産性にまったく異なる影響を与え、適切なものを選択することは、実行可能な他のタスクと同様に生産パイプラインにとって重要です。

同期通信

同期通信は、ある意味で簡単で快適なため、私たちが最も望んでいるものです。

当たり前の事ですが、会話には(通常)少なくとも2人が必要です。

積極的な会話には、複数の形式があります。

  • 打ち合わせ、会議
  • ビデオ/音声通話
  • コーヒーを飲む
  • ランチでおしゃべり
  • 誰かにメッセージを送り、すぐに応答を期待する

これらはすべて、他の方法では実行できないもの、または非同期で実行するのがはるかに難しいものに対する優れたオプションです。

たとえば、パフォーマンスのレビュー、戦略の議論、インタビューなどです。

ほとんどの会議は、適切な文書、適切に作成された電子メールまたはメッセージに置き換えることができます。

ミーティングはあなたの会社が持っている最も高価なツールであり、適切に使用してください。

例3では、2人の開発者が独自のタスクに取り組んでおり、デプロイする前に一連のタスク(A、B、C)を完了する必要があります。

例3
例3

この例は何度も発生します。

この場合、技術要件に関する会議は、両方の開発者を一定の時間中断し、次の誰かが次に何をすべきかをすぐに呼び出します。

これは間違いなく同期通信の最適なユースケースではありません。

中断によりすべての作業が遅れ、デプロイは行われませんでした。

パイプラインの効率について考えると、それは明らかに不均一であり、すべてが迅速でした。

非同期通信

非同期通信は独立性を強化します。

タスクとその効果が、それを計画または実行した人から独立していることを確認することに焦点を当てています。

非同期通信は、次のような長い間求められてきたベストプラクティスをもたらします。

  • 良いドキュメント
  • 書面による手順
  • 通話を介したメッセージング
  • 中断のない作業スロットの尊重

例2と同じ2人(例3と同様)で一連のタスクを開発しているが、非同期通信に頼っている例4。

例4
例4

この例では、メッセージングとよく書かれたドキュメントを介して通信が実行されます。

これらの場合、たとえメッセージ交換の最終目標が時間全体に広がったとしても、ワークフローへの影響は無視でき、多くの場合、より多くの実行を意味します。

なんで?

人間は、タスクAに完全に焦点を合わせた状態から、タスクBに完全に焦点を合わせた状態に移行するのがあまり得意ではありません(次の図を参照)。

たとえば、本の奥深くにいて何かに邪魔されたときに、本に戻るには少し時間がかかります。

例5では、時間と生産性が軸である時間ベースの、グラフが表示されます。

この例では、APIリクエストのペイロードに関するフロントエンド開発者と、プロジェクトのデータベースのローカル設定に関する新しいチームメンバーによる2回目の中断が2回発生するバックエンド開発者のタイムラインを示しています。

例5
例5

バックエンド開発者は、手元のタスクに集中してしばらく時間を費やし(1)、後でフォーカス状態に移行しました(2)。

これ(2)は、私たちが最大化したいものであり、超創造的で強力な頭脳を最大限に活用する場所です。

次に、中断された場合、開発者はフロントエンド開発者からの質問(3)に対処する時間を費やして、タスク(1)に戻ります。

残念ながら、開発者が再び焦点を合わせていたため(2)、新たな中断が発生するのです(3)。

ここまで読んでいただければ、これはすべてあなたによく知られていると思います。

さて、一番上の桜は「フロー」の概念です(2)。

ウィキペディアの定義(詳細は下記です)

ポジティブ心理学では、通称ゾーンにいることでも知られているフロー状態は、活動を行う人がエネルギーの集中、完全な関与、およびプロセスの楽しさの感覚に完全に没頭している操作の精神状態ですアクティビティ。本質的に、フローは、行うことの完全な吸収と、結果として生じる空間と時間の感覚の損失によって特徴付けられます。

フロー

完全に集中することが難しい場合、フローに入るのはさらに難しくなります。

mojalaki
mojalaki

集中し続けるほど、フローに入る可能性が高くなります。

フォーカスを維持できない場合は、フローを忘れてください。

非同期通信は、無意味なタイムシンクを減らしながら、全員の時間と集中力を保護するため、ここで大きな力を発揮します。

非同期通信を行う場合、このタイプの中断ははるかに少なくなります。

そして、あなたが深い仕事をすることができる合計時間はより長く、フローを達成する可能性はずっと高くなります。

アクション

これは、非同期に移行する最後のテナントです。

それは手順に関するものではなく、態度に関するものです。

それは、あなたが全体として、そしてあなた自身がプロとしてどこへ行くのかを気にすることです。

私たちが取り組む準備ができていない、タスクが計画されていない、意思決定者がオンラインになっていないなど、多くの場合があります。

これらの時間では、成功したチームが実行します。

「待つ」時間を無駄にしないでください。

「常にデフォルトのアクション」は、リモートで繰り返し続けるマントラです。

これは、何かをする必要があり、誰もあなたを助けたり、次に何をすべきかを指示することができない場合、常識を使用して自分で何かを拾うことを意味します。

3つのタスクがあり、完全に記述されているのは2つだけだと想像してください。

したがって、必要なものを正確に定義するためにプロダクトマネージャーが、利用できるようになるまで待つ必要があります。

実施例6
実施例6

例6では、Dev 1がデフォルトでアクションを実行し、Dev 2がデフォルトで待機を実行する例を示します。

「常にデフォルトのアクション」と説明した内容では、Dev 1は、彼が取り組むことを望んでいたタスクほど重要ではない場合でも、他の何かを取り上げます。

しかし、開発者2は、そのようなタスクの説明に役立つようにPMが戻るのを待つことにしました。

この例は逸話的であり、誇張であると言いたいのですが、そうではなく、非常に一般的な場所です。

リモートでは、次のタスクを手伝ってくれる人が本当に必要です。

他に何も拾えない場合は、その時間を使ってジムに行ったり、犬を散歩させたり、見たりするように自分の世話をする方が、好都合なのです。

これは、少し良い判断を意味します。

もちろん、いくつかのタスクは非常に繊細であり、それらについて確信が持てない場合は、他のものを拾うことができます。

リスクを無視することではなく、管理された方法で担当することです。

要約すれば

非同期作業は、いくつかのアイデアに基づいて、中断を減らして効率を上げて作業を行う方法を整理する方法です。

  • 非同期作業は、同期作業よりも頻繁に使用する必要があります。
    これにより、リソース管理が改善され、無駄が減り、生産性が最適化されます。
  • タスクを多重化し、範囲を縮小することで、より迅速に配信し、仮説をより早くテストし、より高い信頼性で成功を収めることができます
  • 通信はほとんどの場合非同期であり、ここでのみ同期する必要があります。
    これを経験則として保つことで、人々は自分のタスクに長時間集中でき、文書化や適切な手順の作成などのベストプラクティスに集中できます。
  • 常にデフォルトのアクションを(理由の範囲内で)行うことで、チーム全体がより速く動き、無駄な時間を減らし、所有権を増やします。

コメント

タイトルとURLをコピーしました