Featured image of post アジャイル開発で人生を加速させる

アジャイル開発で人生を加速させる

この記事では、日々を生産的に生きるために最近取り組んでいるタスク管理手法を紹介します。 タイトルは仰々しく書いていますが、要するにやっていることは以下です。

  • 大きな目標(1年の目標、四半期の目標など)を数時間程度でできるタスクまで分解する
  • 週ごとに行うタスクを割り当て、その週は割り当てたタスクを完了することに集中する
  • 週の終わりにその週のタスク完了状況を報告し、ふりかえりを行ったのち、次の週で行うタスクを決定する

アジャイル開発(スクラム)を知っている人向けに表現し直すと以下のようになります。

  • 人生におけるタスク管理をスクラム形式で行う。
  • スプリント期間は1週間。
  • デイリースクラムとスプリントレビューは行わない。定例はスプリント計画、ふりかえりを週1回ずつ行う。バックログリファインメントは随時。

要するに、アジャイル開発のフレームワークを用いて日々のタスク管理をやり始めたら人生が良くなりつつあるという話です。 普段からアジャイル開発している方にも、アジャイル開発って何?という方にも是非おすすめしたいです。 この取り組みを始めてから2ヶ月ほどですが、実際に以下のような効果を実感しています。

  • 虚無の時間(天井を眺める時間など)が減少した。
  • タスクの実行量が増えた。
  • 休日や業務後の時間を有意義に使えるようになった。
  • スケジューリングへの苦手意識が減少した=少し先の未来へ向けて行動できるようになった。

はじめに

まず、この取り組みを始めるきっかけとなった記事を紹介します。

この記事の著者はソフトウェア工学的手法を用いて人生における大小さまざまな課題を解決しています。 我々の取り組みは、このうちのサブセットというべきものです。 そして本記事では、実際に人生にソフトウェア工学を適用してみた結果と感想を報告したいと思います。

ただし、元記事でも触れられているように、向き不向きはあると思うので、元記事の前置きを引用しておきます。

このような手法が我々にうまく適合したのは、以下の我々固有の要素が大きいと思います。

  • 人生をガチガチに分析的・合理的にコントロールすることへの抵抗が薄い
  • 今までの生き方では解決できない(近い将来に破綻してしまうであろう)人生上の困難を抱えており、強力なツールを用いて解決する必要があった
  • 二人ともITエンジニアであり、プロジェクトの管理手法として業務で近い手法を用いていた。 このようなケースに当てはまる二人でない限り、以下で述べるような手法を私生活に取り入れることには不快感が伴うかもしれません。 あくまで特殊ケースの一つとして捉えていただければ幸いです。

アジャイル開発って何?

ソフトウェアを素早く開発するための方法論のことだと思っておけばOKです。

深く理解するためには、ウォーターフォール開発との対比や、各種プラクティスを知っておく必要があるのですが、本記事はソフトウェア開発に関する記事ではないため、詳しくは参考文献に譲ります。

全体的な流れ

使用ツール

アジャイル開発プロジェクトの管理によく使われるJiraConfluenceを使っています。

Jiraはアジャイル開発に特化したタスク管理ツールで、ConfluenceはJiraと連携させることができるドキュメントツールです。 どちらも個人利用では無料で使うことができます。

目標設定

元日や、4月1日に1年の目標を設定する方は多いと思いますが、そのうちどれだけの人が、3ヶ月後にその内容を覚えているでしょうか?

もちろん私は覚えていません。

覚えられないので、文章にして残します。

(管理さえできればなんでもいいですが)今回はConfluenceで目標設定用のドキュメントを作成します。 Confluenceにはさまざまなテンプレートが用意されており、目標設定用のテンプレートもあるので、便利です。

今回はSMART目標テンプレートを使ってみます。

この辺からは運用次第ですが、1年の目標ができたら、それを四半期ごとに達成すべき目標へと分解します。 これも同様のテンプレートで記入します1

これで、自分が次の3ヶ月で何をなすべきだったのかを思い出すことができました。

次に、これらの目標を達成するための課題をリストアップしていきます。

課題作成

Jiraにおいて、課題は次の3つの粒度で設定することができます。

課題種類説明
エピック(Epic)最も粒度の大きい課題であり、達成のために継続的に努力が必要だったり、外的に期日が決まっていたりする課題には特に適しています。(〇月〇日に)試験を受ける、(〇月〇日までに)曲を作って入稿する、など
ストーリー(Story)エピックに紐づく小課題に設定しています。2テキストの○章を読む、Aメロを考える、など
タスク(Task)エピックに紐づかなかったり、習慣的にやっておくべき課題に設定しています。3公共料金を払う、運動する、など

ソフトウェア開発が前提になっていて読み替えが必要ですが、詳しくは公式の記事を読んでみてください。

エピックは、以下のようなタイムラインで見えます。

エピックのドロップダウンリストを展開すると、紐づいているストーリが確認できます4

まず、四半期の目標をエピックという形に落とし込み、次にそれに紐づくストーリを列挙していきましょう。

ストーリポイント設定

ストーリを列挙できたら、各ストーリに対してストーリーポイント(要するに、その課題を完了させるのにかかりそうな時間の見積もり)を設定していきます。

1ストーリポイントに相当する基準をつけておくと、見積りしやすくなるのでおすすめです。

  • 自分は、アニメ1話分を見る(30分弱)を1ストーリポイントにしています。

このあたりの方法論も、Atlassian(Jiraを作っている会社)が親切に教えてくれるので助かります。

スプリント5計画

次に、Jiraのバックログ画面を確認します。 バックログは、なすべき課題を全て列挙したリストです。

バックログでは、解決すべき課題を優先度順に並び替えておきます。

  • 並び替えは随時行います。

1週間のはじめか終わりのタイミングで、その週または次の週で完了させるべきタスクをバックログから取り出します。

この時に、ストーリポイントの合計が右上に表示されるので、過去の実績などを踏まえつつ実行可能かどうかを考えましょう。 タスクをリストアップできたら、スプリント開始ボタンを押します。

これで、次の1週間でなすべきタスクが決まりました。

スプリント実行中

ボード(かんばんと言われることも多いです)画面には、スプリントで実行すべきタスクが、

  • 作業前
  • 進行中
  • 完了

の3列に表示されます。

スプリント実行中は、この画面さえ見ておけば、何をするべきだったかをすぐに思い出せます。

  • モバイルアプリでも確認できます。

タスクに着手し始めたら、作業前⇨進行中に移動させます。 タスクが完了したら、進行中⇨完了に移動させます。

ふりかえり

スプリントが完了したら、6 ふりかえりを行います。

ふりかえりでは、スプリントで達成した成果についてではなく、スプリントの進め方についてのふりかえりを行います。

KPT(Keep, Problem, Try)表に沿って、よかったこと、ダメだったこと、次のアクション案を書いていきます。

ConfluenceのKPT表は少し使いにくかったので、ここだけスプレッドシートにしています。

Tryに書いた内容のうちいくつかを、次のスプリントで試してみるアイテムとして決定します。 これによって、次の週はより生産的な週にすることができます。

レポート

今回のスプリントがうまくいったかどうかを、過去のスプリントと比較することで確認することができます。 この際に重要になるのがストーリポイントです。

ベロシティ(1週あたりに達成したストーリポイント)レポートは、ストーリポイントの達成量の時間変化を表示することができ、 生産性の向上を可視化することができます。

バーンダウンチャートは、ストーリポイントの達成状況を時系列で表示して、理想的な進捗状況(斜めの直線)と比較することにより、スプリントの進捗状況を一目で確認することができます。

進捗状況を把握するために、〇〇のタスクが終わってて、〇〇は終わってないから、順調に推移してるんだな、のようなことを考える必要はありません。 ただタスクをこなして、チャートを下方向に遷移させて、理想的な状態と競争するゲームをプレイすることを考えればいいです。

チームを育てる

ふりかえりはdiscordサーバで、人生をアジャイル開発で加速させたい同好の民と行っています。 スプリントで実行するタスクを宣言したり、より人生を生産的にするTipsを交換したりします。

何よりチームで行うことにより相互監視することができます。

サボっていたらすぐにバレます。

効果

before after比較

次の表に、本取り組みを行う前と行った後の変化を示します。

beforeafter
今週なんかやるべきことあった気がするけど、なんだったか思い出せない。やるべきことをやっていない気がするという罪悪感と無能感から逃れるために、天井を見つめることしかできなくなる。ボードを見れば今週やる内容が思い出せる。やるべきことをやっていけているのかどうかが、ふりかえりによって定期的に明らかになることによって、定期的に自己肯定感を得たり、危機感を覚えたりする。
やる気が出てきた時に、毎回長期的な計画から逆算して、今やるべきことを考える。タスクが完了するたびに、次の作業内容を計画から逆算して考える。やるべきことが何種類もあると、それをどのような順番で取り組むべきかを考えるだけで頭がいっぱいになる。スプリント期間中は、ボード上の未着手課題を淡々とこなしていけば良い。次作業する内容を考える必要はない。
長期的に取り組むべき課題を後回しにする。期日が迫ってきた時にはもう間に合わない状態になっており、「次の機会でいいか」となり、もう一度後回しにする。長期的な目標はエピックの形でタイムライン上に表現されており、随時小課題を追加し、毎週確認することで、コツコツと進捗を積み上げることができる。

上の表を見ればわかるように、本取り組みで、本当に人生が良くなってきている実感を得ています。 これまで、自分は

  • 計画性がなく、
  • マルチタスクが苦手で、
  • 先延ばし癖があって
  • すぐに虚無へと向かっていく

人間だと思っていましたが、今では単に複雑な複数の課題に同時に対処する方法を知らなかっただけだったのではないか、と考えています。 今までのうまくいかなさは自分の能力が低いせいなのではなく、誰でも次に取り組むべき課題を1から考えるのは難しいし、敵の大きさがわからない状態では誰だって先延ばしにしたくなってしまうでしょう。

方法さえ知っていれば、誰でも対処できます。

  • 計画するためのコストと、課題間のスイッチングコストをツールとプロセスが最小限にしてくれる。
  • 課題への対処がうまくいっているのか、いっていないのかが定期的に明らかになる。
  • うまくいっていれば、自己肯定感につながる。

上の表のbeforeのような状態になっていて、どうにかしたいと思っている方には非常におすすめです。 一緒に人生のアジャイル開発を始めませんか?

課題

ただし、以上のプロセスは万能ではなく、課題もあります。

  • 「ゆとり」がない
  • 完了までの時間を見積りにくいタスクへの対処
  • 人数が増えるとスケールしない(ことが予想される)

「ゆとり」がない

ここでいう「ゆとり」がないとは、ゆっくりする時間がないという意味ではなく、より良いやり方を一度立ち止まって探索する時間がない、 あるいは、偶然性の中でしか発見できない気づきやアイデアに出会う蓋然性が下がっていく、という意味です。

以上で解説したプロセスでは、基本的には事前に計画できるものだけがタスクの形で分解され、それらに淡々と取り組むことになります。 我々は知っていることをベースにして目標設定や計画立案をしますが、本当に我々が求めていたものは、我々の知識の外にあるかもしれません。

何か成果を期待するわけではないけれど、とりあえず試してみることをしなければ、我々の人生は局所的最適解へ陥っていくでしょう。

これは人生の大きな問題に限った話ではなく、例えば全く知らない、情報も少ないプラグインを試してみて新しい音作りをするだとか、 あるいはJiraをやめて今まで使ったことのないツールに移行するだとか、そういうレベルの話においても、 博打をなるべく打たない方向にインセンティブがかかるプロセスなので、 局所的最適解を脱せるようにポテンシャルエネルギーを与える活動を意識的に入れていく必要があるということです。

例えば、「とりあえず何時間かやってみる」のようなタスクを追加するだとかの対処が考えられますが、 基本的には何かしらのあたりをつけてから行うことになるので、計画のしにくさの問題は依然残ります。

ちなみに、じゃあ前の方がよかったかというと全然そういうことはなく、 自分は「ゆとり」があると自然に虚無へと向かっていくタイプだった7ので、 偶然性(Serendipity)は多少犠牲になっても、元々やりたかったことを完遂できるプロセスを選びます。

完了までの時間を見積りにくいタスクへの対処

タスクを分解できるところまで分解してもなお、どれくらいの時間がかかるのか見積りにくいことはしばしば起こります。

特に作曲が上手くいくかどうか、などのタスクは運の要素も大きいでしょうし、 楽器を練習するタスクでは、そもそも曲の難しさすらわかっていない状態で、何時間練習すれば弾けるようになるのか、などを見積もるのは非常に難しいです。 読もうと思っていた本が、予想以上に難しくて難航している、なんてこともあるでしょう。

専業でやっている方であれば、とりあえず持てる時間全てをそれに費やす、という戦略も取れますが、 仕事や学業が忙しい方には向かない戦略でしょう。

このような問題に対して、自分は、上手くいくかはわからないけど「とりあえずn時間やる」のような単位でスプリントにタスクを追加することにしています。 ただし、この対処はスケジュールに余裕がある時にしか使えないでしょう。 スケジュールが迫っている時は、う〜ん、どうすればいいんでしょうね〜〜。

そもそもスケジュールが迫る前から取り組んでみて、不確かさを徐々に排除していくしかないという話なのかもしれないですね〜〜〜。

人数が増えるとスケールしない(ことが予想される)

チームを育てるのところに書いた、共同のふりかえりの仕組みは、人数が増えていくと破綻するという見込みがあります。 今のところ2人なのでなんとかなっていますが、人数が増えていくと監視の目が薄くなっていくという点、 ふりかえりの内容を順番に聞いていたら時間がO(n)で増えていく点などの問題があります。

理想的には、冒頭で紹介した記事のように、人生の目的を共有するパートナーとチームを組んでいくのが、利害関係の一致という点で理想的だと思われます。

まとめ

アジャイル開発で実際に人生がよくなっているのでみんなもアジャイル開発しよう

謝辞

この文章はコサメガさんにレビューしていただきました。 ありがとうございます。


  1. 自分は1年の目標とほとんど同じになってしまったので、1年の目標は簡潔に箇条書きすることにして、四半期の目標をSMARTテンプレートで書くことにしています。 ↩︎

  2. アジャイル開発においては、ユーザが体験する機能単位に設定するものですが、人生のタスク管理においては特に気にしていません。 ↩︎

  3. 本来は、ストーリーに紐づく実際の作業内容を記述します。 ↩︎

  4. アニメを見る、を1年の目標にしているので、アニメを見るタスクをリストしています。 ↩︎

  5. タスクを実行するための最小の時間幅のことで、1週間から2週間程度で設定されます。スプリントが始まったら、淡々とリストされているタスクをこなします。極力、スプリント実行中は、スプリント計画外で発生したタスクを差し込まないようにします。 ↩︎

  6. 通常はスプリントが完了したら、スプリントレビューを行います。スプリントレビューでは、スプリント中に作成した成果物をデモすることによって、成果物がユーザニーズにかなうものであるかどうかを関係者にレビューしてもらいます。自分の人生の関係者がいたら、レビューしてもらうのも良さそうです。 ↩︎

  7. そもそも最適解探索をしない、という選択肢をとることに相当する。これでは局所的最適解にすら達せない。 ↩︎

Last updated on Jul 10, 2023 13:25 +0900

Share this post

Built with Hugo
Theme Stack designed by Jimmy