「エンジニアのための時間管理術」まとめ
本ページでは、オライリーの「エニジニアのための時間管理術」の内容をまとめる。 メルカリだと3桁で買えた。
対象読者は、IT技術者やシステム管理者などの、特にキャリアの浅い人となっている。 ただし、プログラマは別種の問題を抱えているので、プログラマの人は参考程度にする。
本文では、システム管理者(以下SA)特有の時間管理についての問題と解決策を述べており、具体的には以下のような内容を扱っている。 そのほかにも人生の長期的な計画や文書化、自動化などについても触れているが、本ページでは割愛する。
- 割り込みに対する対処
- 日常業務のルーチン化
- 筆者の考案したシステマチックな時間管理方法「サイクルシステム」
タイムマネジメントの原則
IT産業に従事する人にとってのタイムマネジメントは非常に難しい問題である。 プロジェクトを進めるためには作業に集中しなければならないが、集中を阻害する割り込みが絶えず発生するためである。(特にSAは)
割り込みの影響と沈静化
割り込みは、作業の中断により生産性をひどく低下させる。 中断した作業を再開する際に、なにをどこまでやっていたのかを思い出す必要があり、また、このときに思い出し忘れるとアウトプットの品質を低下させかねない。
このような割り込みを鎮静化するために、同僚と相互不可侵協定を結ぶことで、集中しなければならないときには他の人へ割り込みへの対処を委ねることが有効である。
SAのタイムマネジメントの原則
SAにとって、タイムマネジメントでは次の原則が重要になる。
- タイムマネジメント情報を、1つのオーガナイザにまとめる
- オーガナイザ=データベース
- 紙でもデジタルでもなんでもいいが、必ず1つにまとめる
- 能力は重要な作業のために温存しておく
- いま取り掛かっている作業以外のことに、脳を使わない
- 日課を定めてそれらに従う
- 不定期に発生する事柄は、定期的なものにしてしまう
- 例) 週に1回、先輩に相談することがある→毎週金の17:00から先輩との定例MTGを行う
- 習慣やモットーを養う
- 「早いに越したことはない」というモットーを頭に入れておけば、細かい作業を先送りにせず済む
- 「プロセスを信頼する」
- 習慣化することで、頭のリソースを使わずに済む
- プロジェクトタイムの間は集中力を保つ
- 割り込みがない環境を作るべき
- マルチタスクOSにおいても、割り込みから制御を戻す時間は無駄な時間である
- 日常生活の管理にも、仕事で使用するツールと同じものを使う
- 大事なプライベートの予定も忘れないようにする
- 死ぬ間際に「仕事の時間をもっと増やせばよかった」と思う人はいない
集中と割り込み
邪魔なものを取り除き、割り込みに効率よく対処することで、作業に集中できる環境を作ることができる。
割り込みとは他人が自分の時間を支配することであり、タイムマネジメントにとっての敵である。 また、割り込みによって中断した作業を再開する際には、ミスを引き起こす可能性がある。 そのミスによって作業時間が本来よりも伸びる可能性も否定できない。
集中するための施策
集中するためには、以下の施策が有効である。
- ディスプレイの付箋や、ゴミなど、机上の無駄なものを排除する
- メッセンジャーやメール通知を切る
- 自分にとって知的活動に最も適した時間を選ぶ
- 同僚よりも少し早く出勤する
割り込みへの対処
人が訪ねてくるなど、それでも割り込みが発生した場合は、次のいずれかを使ってできるだけ早く時間の主導権を取り返す。
- 委任: 要求への対処を別の人に任せる
- 記録: 要求をオーガナイザに記録して、割り込み前の作業を再開する
- 実行: 割り込み前の作業を完全に中断して、最優先で要求に対処する (緊急時のみ)
ただし、要求者との関係悪化を防ぐために、次のことに注意する。
- 要求を受理する際は、要求がいかにも重要であるかのように見せつける
- そこらへんの紙切れに記録するのではなく、重厚なオーガナイザに記録するべき
- 要求が受理されたことは要求者にいち早く伝える
- 顧客は、予想以上に早いアウトプットよりも、要求が既に正しく受理されているかを気にかける
また、要求は必ずオーガナイザに記録する。 決して記憶に頼ってはならない。 仮に要求を完璧に記憶できたとしても、その頭脳はもっと重要なことに使うべきである。
著者は割り込みとは話しかけられることを想定しているようだが、リモート勤務のときのslack通知などは基本的には作業中の割り込みは無視で良いと思う。
ルーチン化
ルーチンとは「一度だけ考えて、何度も実行する」ための手段である。 繰り返し発生するタスクについて、いつやるのか、何をするのかなどの情報を事前に決定することで、そのタスクをルーチンとすることができる。
仕事、プライベートを含めて、日常のタスクをルーチン化することで、手間を省き、決断を下す時間を短縮することができる。
ルーチン化の例
ルーチン化の例としては、以下のようなものが挙げられる。
- 日曜日に給油する
- 前: 1週間程度の間隔で、残量が少なくなったら給油していた
- 後: 給油する日を、あらかじめ毎週の日曜日と確定させるた
- 車に乗るときに給油するかどうかを悩む必要がなくなった
- 上司と定期的に会う
- 前: 相談事が起きる毎に約束を取り付けており、約束を取り付ける時間がもったいない
- 後: 毎週木曜日など、定期的なアポを上司と取り付けた
- 自分も上司も予定を立てやすい
- 部下のもとを定時に巡回する
- 前: 部下からの相談により絶えず割り込まれる
- 後: 巡回時にまとめて報告や相談をしてくれるようになった
- 緊急でない割り込みを減らせる
- 部下が巡回を予測した上でスケジュールを組むようになる
- バックアップテープの手動交換を事前にまとめる
- 前: テープが切れたら1台1台交換しており、テープが切れていないか不安なことが度々あった
- 後: テープが切れる間隔を予測して、定期的に全部のテープを交換するようにした
- テープが切れているかどうかを不安に思う必要は無くなった
- 切れていないテープも交換するため、幾分かテープが無駄になるが、時間の方が大切である
- 家を出る前に、ポケットに鍵が入っているか確認する
- etc…
ルーチンの作り方
ルーチンを作ることを検討するべき事柄の種類を以下に示す。
- 予定されていないが、繰り返し発生する出来事
- システムの保守作業
- 人間関係の保守作業
- 先延ばしにすると余計に時間がかかる作業
- 作業時間よりも作業について考える時間のほうが長いような作業が当てはまる
- よく忘れるもの
- 重要度や優先度の低い仕事
- 例) 隔週で必要な時に消耗品を発注→毎週月曜日のタスクに「消耗品の発注」を追加する
- その週に発注するものが無かったとしても、完全に記憶からなくなるより、オーガナイザに記録した内容を無視する方がいい
- 新しい能力の育成
- 例) 1年に1つトレーニングクラスを入れるなど
- 最新情報の把握
- 例) 1週間に1時間は、技術雑誌を読むなど
要求の遂行
遂行能力とは、すべての要求を記録して、完了または拒否まで運ぶ能力である。 顧客やマネージャは遂行能力を高く評価する。
要求は頓挫させてはならない。 必ず、完了または拒否まで運ぶ必要がある。 顧客にとって、依頼したことが忘れられることほど腹立たしいことはない。
要求はオーガナイザーに確実に記録する。 要求を受けた時に手元にオーガナイザーが無いのであれば、メールやチケットなどを通じて要求を送信するように依頼しなければならない。 これにより、要求を忘れないようにする責任は顧客に転嫁できる。
サイクルシステム
サイクルシステムとは、筆者が長年かけて編み出した時間管理術の名称である。 全ての要求を記録して、それらを終了まで見届けることで、膨大な数の要求を整理、掌握することができる。 サイクルという名前は、毎日繰り返し実行され、1日の出力が次の日の入力となるようなシステムであることに由来する。
オーガナイザーの必須要素
サイクルシステムで用いるオーガナイザーには、次の要素が必要である。
- カレンダー
- 長期的な目標のリスト
- 1日毎のページ (紙の例)
- 作業リスト
- スケジュール
サイクルシステムの鍵を握るのは、1日毎の作業リストである。 全てのタスクを1つにまとめた「増え続ける破滅の作業リスト」は気が滅入ってしまうし、プロジェクトごとに分けてしまうとリストだらけになってしまう。 1日単位でリストを作り直すことで、1日の終わりに全てのタスクを処理したという達成感を得ることができる。
実行手順
サイクルシステムでは、1日を1サイクルとして、それを毎日繰り返す。 1サイクルの内容を以下に示す。
- 今日のスケジュールを作成する
- 今日の作業リストを作成する
- 優先順位を設定し、スケジュールを組み直す
- 予定に取り組む
- 1日の終わり
- 会社を出る
1日の最初の10分は、必ず計画に使う。 出勤してまずやるのは、手順1,2,3の計画である。 電子メールやニュースサイトのチェックなどをしていたら、あっという間に数時間が経過してしまう。
以降では、オーガナイザが紙である場合について説明している。
1. 今日のスケジュールを作成する
まずはカレンダーを基に、今日のスケジュールを作成する。 1時間の会議が15時からあるのであれば、スケジュールのその部分を塞ぐ。
カレンダーの内容を全て反映できたら、塞がれていない時間の合計、つまり今日の作業時間を計算してみる。
2. 今日の作業リストを作成する
作業リストに今日やるべきことを書き込んでいく。 リストの順番や、優先順位、所要時間の列は気にせず、タスク内容だけを書き込む。 他人に見せるものでもないので、説明は自分が思い出せる程度に書く。
作業のリストアップができたら、それぞれの所要時間を時間列に書き込んでいく。 合計が今日の作業時間を超えた場合は、次のステップで対処する。
以下に作成した作業リストの例を示す。本の引用ではなく、自分で適当に作ったものです。
済 | 優先順位 | 時間 | 項目 |
---|---|---|---|
15m | sdk update | ||
1h | ビルドエラー修正 | ||
30m | マウス動かぬバグ解析 | ||
5m | satou3 slack reply | ||
1h | 機能X実装 | ||
1h | GUIライブラリ調査 |
3. 優先順位を設定し、スケジュールを組み直す
作成した作業リストの各項目について、優先度を割り当てる。 ただし、作業の優先度はこの世には次の3つしかない。
- 優先度A: 期限が今日で、今すぐ終わらせる必要がある
- 優先度B: 期限が近づいている
- 優先度C: それ以外
作業リストの合計時間が今日の作業時間を超えてしまっている場合は、次のいずれかのアクションを取る。
- 最も優先順位が低い作業を翌日に回す
- 今日の作業リストには打ち消し線を引いて、明日の作業リストの先頭に書き写す
- 作業を小分けにする
- 作業を小分けにして、一部を翌日に回す
- 作業を短縮する(作業の範囲を狭める)
- 作業内容のうち、やらなくていいことを削る
- 例) 天才ハッカーBobのPCをセットアップするという作業の場合、追加ソフトウェアパッケージをついでに入れる必要はないだろう
- 推定所要時間を変更する
- もともと多めに見積もっていたなら、ちょっと削ってみる
- 委任する(その権限があるならば)
- 優先順位を確認するための意見を上司に求める
- 部下を思うように動かせないと感じているマネージャにとって「この優先順位で良いでしょうか」という質問はとても嬉しい
- 作業リストの項目を同僚へ委任してくれたり、削除してくれたりしてくれる
- 上司は最も強力なタイムマネジメントツールになる可能性がある
- 会議や約束を延期する/代理人を出席させる
- 参加者全員に迷惑をかける場合があるので、なるべく避ける
- 残業する
- これは最悪の選択である
- そもそも人が1日の中で生産的に仕事をこなせるのは4~5時間程度である
4. 予定に取り組む
優先度A,B,Cの順に取り組んでいく。 同じ優先度同士の作業については、リストの上の方の作業から消化する。 リストの上の方の作業は昨日後回しにした作業であることが多い。
作業の前に会議や約束の時間を知らせるアラームを設定しておき、全能力を1つの作業に集中させる。
1つの作業が終わったら、続けて次の作業を開始する。 次の作業は優先度とリストの順番だけによって決定される。 リストを吟味して次に何の作業をしようかと悩んではいけない。
5. 1日の仕上げをする
作業リストの項目が全部完了することは滅多にないが、その日中に作業リストの項目は全て処理されなければならない。
就業時間の30分前になったら、残っている項目を以下のいずれかのアクションを取ることで処理する。
- 途中まで終わった作業の場合、作業を小分けして、残っている作業を明日の作業リストへ追加する
- 優先度Aの場合、作業の要求者に連絡を取り、遅延すること、代替プランを説明する
- 優先度B,Cの場合、明日の作業リストへ書き写す
これにより、すべての項目を処理することができる。
6. 帰宅する
作業リストの全ての項目が処理されたため、達成感を感じながら帰ることができる。
その他のヒント
チケットや割り込みへの対処
毎日決まった作業時間をチケットの処理に充てることで、サイクルシステムとリクエストトラッキングシステムとの共存を可能にする。 これは、作業リスト作成時に、優先度Aの「チケット」という項目を追加するだけである。
同様に割り込みについても、作業リストに「割り込み」という項目を追加する。 これは単なるバッファであるため優先度はBであり、また、誰からも邪魔されなければ突っ立っている必要はない。
仕事が早く終わったら
奇跡が起きて何もすることがなくなった場合は、自分にご褒美を与えなければならない。
- 明日の仕事を先に始める
- 夢見ていたプロジェクトの山に着手する
- 溜まっている雑誌を読む
- リクエストトラッキングシステムを調べて、古いチケットを処理する
- 上司に願い出て仕事を願い出る(冗談)
- 何もせず座ってる
- 退勤する
個人的な用件
プライベートの用件についても、作業リストに含めておけば、忘れなくて済む。 ただしプライベートな項目は、作業リストの下の方にまとめたり、カテゴリ分けしたりしておく必要がある。 そうでなければ、帰る前に全項目を処理したという達成感を感じることができなくなってしまう。