ブログ名

競技プログラミングやお歌のお話をする高菜です。

年末年始の 9 日間でアルゴリズムイントロダクション第2巻の後ろ 3 分の 2 を乾燥したお話です。

要約

お盆休みに蟻本を完走(記事へのリンク)して、とてもためになったのを踏まえ、長期休暇にはなんらかテーマを決めて取り組んで見ることにいたしました。

この冬休みは『アルゴリズムイントロダクション』の 第 V 部(高度なデータ構造) 第 VI 部(グラフアルゴリズム)を読み、問題に取り組む計画を立てました。とてもストレッチな目標のつもりでしたが、年越しを待たず早くも達成してしまい、後半迷走し、間延びしてしまいました(泣)

そこで今回の計画段階、年始以降の軌道修正段階の反省をまとめます。また、今後は長期休暇以外にも。これと似たような方式を導入できないかを検討します🔥

進め方

  • まえがき、本文、文献ノートはノートにまとめる
  • 問題はすべてトライし、厳しそうならばスキップする

ことにしました。

タスクを列挙すると、500 行くらいになりました。この時点で蟻本のスプレッドシートの 2 倍でしたから、それでたじろいでしまったのですが、今思えば、今回のほうがタスクが細かっただけのようでした(泣)

タスクリスト
タスクリスト

結果

これが 12 / 31 お昼間時点のグラフです。一通りはやるというのが目標でしたから、計画は達成と見て良いでしょう。第 23 章最小全域木と第 26 章最大フローが穴だらけですね。(ちなみになのですが、このあと多少は埋めました!)

f:id:ngtkana:20201231173836p:plain
完走

慌てた私はうなぎのタレのように計画を継ぎ足し、第3巻(初版)に突入。しかし序盤ソーティングネットワーク、算術回路、並列プログラミングといった、競技プログラミングからは少し離れてしまうテーマが続き、モチベーションが下がり始めました。(この先の整数、FFT、幾何あたりが待ち遠しかったです。)

そこで第 3 版(分冊でない)を購入し、そちらにシフトしたのですが、すると取り組んでいた章のマッピング問題で進捗が穴だらけになってしまい、なんだか頭が散らかってしましました……

評価

タスクにかかるお時間は一様ではなかったのですが、それでも進捗の管理としてはとてもやりやすかったです。また細かくタスクにしておくことで、脳死で精進ができてとても楽でした。やはり何をするかについて考えるお時間と、実際にするためのお時間は分けるのが脳に優しいです。

取り組んだお時間なのですが、はじめの 5 日ちょっとくらいで、およそ 50 時間、コンテストに 15 時間くらい出ていたので合わせると 65 時間ですから、一日あたり 12 時間前後といったところでしょうか。やることが決まっている場合の最高パフォーマンスがこれくらいなのですね。一方、気まぐれでいろいろやっているときには実際に作業に集中しているお時間は 8 時間程度な気がします。そう考えると、計画にお時間を取られてもペイしそうですね。

正直なお話、こういう精進の仕方は少し怖いです。というのもこの手の精進の効率が良いのは、計画に疑いを持っても「取り合えず走る」と決めることで、そこの判断コストを精進に回しているからに過ぎないのです。ですから、「何をするかについて考えるお時間」自体はまた別に確保することを意識しないといけませんね。

ところでこれが今回の最大の学びなのですが、本計画のタスクそのもの以外(コンテストに出る、計画を継ぎ足すなど)はタスク化しませんでした。これがまたよかったです。こういうものは「進捗を削って」行うものと捉えるほうが、進捗ファーストが維持でき、失速を防ぐ乃至可視化することができます。

今後

普段の精進にも取り入れたいです。 おやすみでしたから 9 日間でしたが、平時は一ヶ月単位くらいでこのような計画をしていくとよいのではないかと思いました。これより長いとさすがに他のことをやりたくなってしまいます。「何をするかについて考えるお時間」が、一ヶ月に一度はほしいです。

その月が始まるまでに、スキマ時間で行うとよいです。年末年始は特別枠ですから、1 月は 4 日から始まります。今月分の計画を立てる必要がありますね。

それと細かいのですが、今後様々なものに取り組んだり、毎月計画をしたりする中で、スプレッドシートの具体的実装どうしよう問題が残りますね…… 1 月は冬休みシートに継ぎ足して、月を新しいカラムにするしかないでしょうかね。その月の進捗管理もさることなら、本の埋めていない問題も管理したいですから、シートを分けるわけにはいかなさそうです。

PM さんに怒られそうです。

お仕事もこれくらい真面目に計画してくださいと言われそうです……