そーだいなるらくがき帳

そーだいが自由気侭に更新します。

課題を管理して実行して達成するための手順

 今年、この話を何度か別々の人にすることがあってずっと纏めようと思っていたのだけど一年が終わってしまうので来年の自分のために今書いてしまう。 目新しいことは何一つ無いのだけど、大切なことだし、意外と社会人になってしまうと教えてもらえないことも多いみたいなのでここでまとめる。

 表題のこと、つまりやりたいことを実現するために必要なことは、そんなに難しいことじゃなくて以下の条件を満たし、実行することが大事だ。

  1. やりたいこと=課題をタスクに分解する
  2. タスクを実行できるだけのリソース(時間・お金・体力など)を割り当てる
  3. 実行する

 これだけなんだ。仕事だってなんだって一緒なんだけど、だけどこれを日常的に実現することが難しい。 だからどうやって実現していくか?って説明のために、自分がやってることを書く。

課題を整理する

 仕事と作業は違うという話がある。 トヨタでは最初にそれを教わるらしい。

www.haramasahiko.com

 ソフトウェアでいうと設計とコーディングは仕事と作業に近い。 ただ設計とコーディングを同時にやっている人もいると思うが、今日は設計と実装は別々に行われるものとする*1

 まず○○という機能を実装するためには、hogeってエンドポイントが必要で、hogeが取り出すためのデータの整理が必要で、そのためには…ってことを考えることが設計だし、仕事。 よし、やること決まったな。と上から順番にやっていくのが作業。

 これは多くの仕事、勉強、家事、なんでも当てはまるし、意識してやってる人もいれば無我の境地でやれる人もいる。 つまり仕事とは設計であり、課題を整理し、タスク=作業に分解することだ。

 そこで自分は課題を日報をgithubのissueで管理してる。

f:id:Soudai:20201209095024p:plain

 見てわかるとおり、課題としての実現したいことを書く、程度にしている。 もし、課題をタスクとして分解したい場合はネストを一階層下げて、タスクをさらに列挙したりするし、日をまたぐような内容はでかい粒度の課題は課題を細分化するために子issueを立てて作業したりする。 これは仕事でいうとチケットのだったりissueの粒度でも一緒だし、自分の場合は自分だけしか見ないので雑に管理している。 しかも自分の場合は公私も一気通貫で一つの日報で管理している。

 割り込み(予定していなかったタスク)があった場合はissueのコメントにどんどん追記していく。 割り込みが多い場合はコメントが連なるので、その日の割り込み量が体感でわかる*2

 また失念していたタスク、なんかもコメントに書いていく。 こうやって課題を整理して、纏めていくと一日の自分の作業の限界量や見積もり精度が見えてくる。 一日の終わりに全てにCHECKがつくのが理想でできるだけそこを目指すのだけど、ダメだったときはやはり見積もりが甘かったということになる。 そこでチケットをCloseするまえに残タスクをissueに起こして明日の自分に引き継ぐ。

 あとは一日の振り返り、感想、思い出なんかを書いてチケットをCloseする。 これを繰り返すことで自分の振り返りのリズムを作って課題を整理する力と見積もる力、そして自分の作業の限界量を知っていく。 作業の限界量はそんなに増加することは無い。 だから毎日仕事があふれるなら改善が必要で、そのために効率化したり、アウトソーシングしたり、自動化したりを考える。 そういうことにも課題を毎日整理して、日報を書いていると気付ける。

適切なタスクの粒度に分解する

 課題を倒せないときは多々ある。 自分の場合、手がつかない課題は以下のような理由がある。

  1. 自分が作業を行う価値がわからない
  2. やり方がわからない
  3. やる気が出ない

 これについてそれぞれ説明していく。

自分が作業を行う価値がわからない

 これについては致命的に手が進まない。それでも本当に必要な作業(例えば確定申告とかそういうの)はアウトソーシングする。 本当に必要な作業であればアウトソーシング先はある。 そのために必要なタスクに分解していく。

  • 外注先を調べる
    • ○○さんに聞いてみる
    • 20分ググる
    • hogeに電話してみる
  • 見積もりをもらう
  • 発注

 みたいな感じで分解して、実行していく。 もしアウトソーシングを調べて、外注費が高額で払えない場合などは自分で作業する価値を認識することができるし、発注作業と自分が行うことのスピードを天秤にかけることもある。 このように最初は価値を見いだせなかった課題も、調べていくと価値を見出すことが出来る場合もある。

やり方がわからない

 これは実は結構ある。 一見するとやる気が出ないと感じているのだけど、課題を分解していくと「そもそも分解できないな…このパターンはやり方がわからないから手が進まないパターンだな」と認知することもある。 そういう点でも進まないタスクは粒度がでかすぎるということがわかるし、そういう場合はどんどん分解していくのが良い。

 例えば年末調整を終わらせるという課題があるとする。 今までと違って年末調整は自分以外にも会社としての年末調整もあるのでタスク量が多い。 初めてのタスクだから作業見積もりもわからない。 漠然とでかい課題を戦おうとすると手が進まない。 そこでタスクを次のように分解する。

  • 税理士さんから来たPDFを全てダウンロードする
  • 印刷する
  • 書類の確認
    • A.pdf
    • B.pdf
    • C.pdf
  • ここまでやってもう一回作業を見積もる

 みたいな感じでわからない作業をまずわかるところまで課題として分解する。 そしてチェックポイントを置いて、そこでもう一度作業を見積もる。

 プロトタイピングと同じような進め方。 小さく初めて、進んで振り返る。 未知の課題への戦い方はプロダクト作りでも日常的な作業でも一緒である。 技術的な課題も例えば1時間ググる。まずはHello worldを書いてみるなどのタスクを設定することもある。

 終了条件が確実に来るものに設定するのがコツで、書類の確認が膨大できびしい…って場合はページ数を小さくしてもいいし、時間で区切ってもいい。 とにかくタスクが確実にチェックポイントに来ることが大切。

やる気が出ない

 やる気というのは自分の内側から沸き起こるものではなく、作業の中で生まれてくるものらしい。 なのでやる気が出たら頑張るは嘘で、とにかくタスクを始めると勢いがついて物事が捗るのが普通の振る舞い。

 だから本当に面倒くさいだけならまずは簡単に始めれるタスクに分解する。 日報もそれに近いhowなのだけど、例えば経費精算のように、やり方もわかるし、必要だけど本当に面倒くさいだけの場合はヌーボードに次のように書いて始める。

  • 領収書を取り出す
  • 領収書を勘定科目ごとにまとめる
  • Chromeを閉じる
  • 通知を集中モードへ切り替える
  • Firefoxを開く(ついTwitterを開くことの防止)
  • freeeを開く
  • 連続取引を開く
  • 1件目を登録する

 これをヌーボードに書いて、一個やるごとに線を引いていく。 ここで2~3件登録する頃にはほっといても完了できる。 さすがに経費精算は毎月やってくるのでこれは上記のissueテンプレートを自分は用意してissueでやっている。

 類似例ではPTAの連絡とか学校の課題とかがあって、そういう場合はとりあえずタスクを文化してヌーボードに書くようにしている。 ここだけ物理なのは、物理の方がタスクを倒して線を引くという作業で進捗を強く感じることが出来るからだ。 進捗を感じることができればいいので付箋とかでも良い。 だから自分にあった方法を模索しながら試してほしい。

 ちなみにヌーボードは新書判サイズがあって、これが上記の用途で便利なので常にカバンに入れて携帯してる。 A4サイズは設計で考えるときに便利なのでオフィスに置いて使い分けてる。 ヌーボードは本当におすすめ。

 この話は日常的にあって、よく使う例えに「風呂に入るまでは面倒くさいが、風呂に入ってしまえばその前の気持ちを忘れるし、風呂から出たとき、やっぱ面倒だったなと思うことなどない」がある。 だからまずは風呂をためる、服を脱ぐ、などのタスクに分解するのと一緒なのである。

それでも手が付かないタスクがある

 わかる。あるよね~~~例えば原稿とか*3。 あとは技術書を読むとか筋トレするとかもやりたいけどできない、つい漫画を読んで時間が過ぎてしまった。などあると思う。 特にこういう長い連休が始まる前は絶対にやるぞ!と強い決意を持っていたはずなのに気づいたら半分終わってたりする*4わけだ。

 それは結局のところ、自分のリソースに対して、対象の課題、タスクの優先度が足りてないということになる。 当たり前の話だが下の図のように、優先度が低いと限られた自分のリソースはいつまでも割当られない。 人間は同時並行は苦手だし、優先順にしか処理していけないので優先度が低いと優先順がいつまで経っても上にこず、ずっと残り続ける。

f:id:Soudai:20201231154209p:plain

 例えば仕事のように一定のリソースを強制的に割当られる状況なら良いが、自己研鑽や運動のように必要性を感じていても、自分の中の優先度が高くないタスクをすすめるにはどうすればいいのだろうか。 そこで大事なことが次のようなことがある。

  1. 現実を受け入れる
  2. 優先度の整理をする
  3. 優先度を上げるためのハック
  4. 諦めるという選択肢

現実を受け入れる

 まず優先度が高くないことを認めよう。現実を認知することができないと改善することができない。 そして優先度を上げることができない理由を直視しよう。 自分に嘘をついては始まらない。 技術書の場合は、面白くない、今すぐ必要だと思っていない、読んでても理解できない、などがあるはずだ。 運動の場合も同じく苦しい、膝が痛いなど。

 やる気の問題の場合は前述の「まずは1ページ読んで見る」や「靴を履く」というタスクを設定することで解決することもある。 それ以外の場合は後述の話に繋がってくる。

 まずは問題を正しく認識して、課題として設定するためにも現実を受け入れよう。 正月休みも、すでに半分折り返しているのだ!*5

優先順を整理をする

 靴すら履くリソースが無い場合はそもそも1日にのリソースが無い、割り込みが多すぎて予定通りにスケジュールが組めないなどがあるはずだ。 そこで優先度を見直し、優先順をもう一度整理することをおすすめする。 日常的に日報を付けていると、自然と常に整理されるのだが、そういう習慣がない場合は自分のタスクの優先順が見えてない場合も多い。 そもそも自分のタスクがどれくらいあって、日常でどれくらいリソースを消費しているか把握しているだろうか?

 意外と整理してみると家事や仕事などは効率化できたり、自動化やアウトソーシングで辞めることができたりすることもある。 または家族との時間や趣味の時間が意外と少なかったりするかもしれないし、通勤時間で頑張るぞ!と思っていても、通勤時間は意外と支配的な時間ではなくて、他の時間で無駄なリソースを食ってる場合もある。

 リソースは時間、お金、体力など様々な要素によって成り立っていて、夜にやるのは体力リソースが無いからで時間の問題ではなかったりすることもある。 なのでリソースに対して、どのようなタスクを優先的に割り当てていくか、はとても重要だし、特に休日という貴重なリソースは奪い合いになる。 そこを現実を受け入れた上で、整理して、正しく優先順に並べていこう。

 それを行った結果、優先度を上げたいが他に比べるとどうしても優先順で下になってしまい、リソースに入らない場合が出てくる。 そもそもここで優先順が上げれるようなタスクだったらもうすでに達成しているはずだ。 そんな場合は次の話になってくる。

優先度を上げるためのハック

 気持ちはアンコントロールな世界だ*6。 だから仕組みで解決することが大切。 そこでいくつか自分がやっているハック=仕組みを紹介する。

  1. 納期を付けて責任によって優先度を上げる
  2. 他人を巻き込んで責任によって優先度を上げる
  3. 事前投資を行ってサンクコストを高めることによって優先度を上げる
  4. 強い報酬*7を設定して、利益を受けるために優先度を上げる
  5. 他のタスクと一緒に行うことで他の優先度と同等に引き上げる

 他にもあると思うがそういうのは世に出ている自己啓発本とか読むと沢山でてくるし、そういうのを何冊か読むだけで事が足りるのでそっちを読むと良いと思う。 例えば1.と2.の複合方法がアドベントカレンダーでブログを書く、という手段になる。 他にも登壇駆動勉強や輪読会なんかも似たような効果がある。

 こういう優先度を上げるためのハックは相性がすごくある。自分は1.と2.は金銭リソースを使わないし、効果的なのだけど3.はそもそも初期投資出来る余裕がなかったり、4.はあまり効果が無いので採用することが少ない。 5.は多くの場合に有効で、通勤中に本を読む、昼食の買い出しついでに散歩するなどがある。 5.のハックはアイディア次第で効果も絶大なのでぜひ試してほしい。

 あとは id:aereal のこの話も良いハックだ。 まさに「一人のほうが早く行ける、だが遠くに行くなら仲間といけ」だ。

this.aereal.org

諦めるという選択肢

 様々なことを試してもうまく行かないこともあるし、そもそも優先度を上げる気持ちにならないこともある。 それはそれで間違っていない。 自己研鑽することが人生の全てではないし、人生の豊かさは常に自分の主観で決まる。 この話は昔、別のエントリーにも書いたことがある。

楽しい一日は色んな形が人それぞれありますし、視点を変えると今まで無駄だと思っていたことが楽しく感じます。 ですので皆さんも楽しい日曜日を思い出しながら今週の平日も楽しみましょう!!

soudai.hatenablog.com

 別に寝ることだったり、ゲームや漫画を読むことが他のタスクよりも優先度が高くても当然良い。 人それぞれ、自分の大切なことがあるはずだ。 そのために他のことを諦めるということはとても大切な選択肢だし、諦めたことを受け入れれば良い。

合わせて読むと良さそう

soudai.hatenablog.com

soudai.hatenablog.com

終わりに

 人間だからうまく行かないことは沢山ある。 だけど次はもっとうまくやれる。 そのための一つの参考にしてほしい。

*1:自分は先に設計をしっかりとしたほうがいいと思っていて、だからTDDに価値があると思うわけだけど

*2:グラフで可視化とかはやってないけど複数人を管理するならアリだと思う

*3:諸説あります

*4:わかる~~~

*5:これは本当にそう…そうなんだ…

*6:諸説ありますが自分は自分を信じてないタイプ

*7:達成報酬として欲しいものを買うなど