eggchicken's diary

ゲーム好きプログラマーの日記

一歩も進まない状況を避けていったら良さそう

 今月の仕事はなかなかやる気が出ず、だるかった。メタプログラミングされた機能に手を加える必要があって、コードを読み解くのにものすごく時間がかかった。しかもまだ終わっていない。メタなので、プログラムが動きながら、プログラムの要素を定義している。いつのまにかクラスやメソッドが追加されたりしていて、一筋縄ではいかない感じ。動かして、変数の中を眺めたり、途中で止めてみたりして、どこからどこまで進んでいるのかようやく把握できる。つらい。ふだんプログラミングをかいているときの万能感とか支配感とかまったくない。どうにか直した箇所も、たかだか10行にも満たないので、何かこう、仕事をしている感じがしない。もし厳しく監督されてたら、一日の進捗が具体的に説明できなくて苦しいと思う。そんなふうなのでモチベーションも上がらない。まだ終わってないけど、こういう時に、何を支えにして仕事をしていくのかというのは、少し面白い話題のように思える。最初につまらないと感じてしまった仕事をどうやって変化させていくか、というところ。

 そういえば、ダークソウルもやたら難しくて、さっぱり進めない時があった。ダークソウル2の時よりも、1の時のほうがひどかった。当然モチベーションは上がらない。こういう時って、典型的な一つの方法として、土台を固めるというのがあると思う。ゲームで言うなら「レベル上げ」というところ。とにかく行き詰まったら、単調作業によって少し状況が良くなるよ、というタイプのもの。状況が良くなって、行き詰っていたポイントが打開されると、楽しくなってモチベーションが上がる。ゲームではよくあることだ。一方で、現実ではレベル上げなんて悠長なことをしていられない場合が多い。それに、レベル上げのつもりが、なんにも成長してないとか、全然どうでもいいパラメータを高めていたりとかそういうことがある。逆にモチベーション下がる。

 また別の方法として、真っ白なノートを開いて、すべての前提を放り投げて最初から問題を眺めるというやり方がある。余計な前提が取り払われるので、なんか新しいことが見つかるかもしれない。手がかりができるとやる気が出てくる。ダークソウルだと武器を変えてみるとか、魔法使ってみるとか、一つ前のダンジョン行ってみるとか。これもまたひとつの典型的な方法だと思う。何だかよくわからないのでリセットして最初からやろう、というやり方。ピクロスとかマインスイーパーとかやってて、どうにもつじつまが合わなくなった時は、最初からやったほうがまだましだったりする。クリア出来ていたとしても2周めのほうが新しい発見があったりする。

 白紙にして再スタートする手法から初めて、どんどん遡って行くと、そもそも問題自体の価値を疑い始める。「これ解く必要があるの?」「そもそも人間とコンピュータに解くことができるの?」とまあそういう風に。これは、あまりゲームではやらないかもしれない。

 さてそんなふうに考えて行ける時はまだいい。問題は進まない時だ。視野を広げてもただの夢想か甘えかにしかならない時。そんな時の仕事はとてもじゃないがやる気がしない。逆に考えると、こういう時こそがつまらないのであって、これを避ければいいのかもしれない。そのためには、一歩でも進んでいるということ、それが確かめられる状態を作ること良いような気がする。結局、土台を固めるとか、白紙にするとか言う手法は、進めない時に進めかたをさがす手法にすぎない。それらが功を奏するのは、止まっていたものが進むようになった時だけだ。仕事でもそうだと思う。実際、バーンダウンチャートというやつを書いていた時も、そう思った。たしかに一歩進む安心感。それだ。ただ、今日進んだことが、いつもグラフには現れてくるわけではない。そういうものを見なくても自分に対して、何が進んだのかと問いかけて答えを得ることが、やる気を保つ良い方法なのかもしれない。