時間を溶かす
I think the experience of banging your head against the wall (for a bit) can be valuable.
https://news.ycombinator.com/item?id=37001346
仕事でなにかわからないことがあったとき、時間を使って自分で調べるのが好きだ。わかりそうな人に聞くのが正しいのはわかっているし実際に聞いて解決することもあるが、自分で調べて答えにたどり着く達成感は他に代えがたい。
時間を溶かす相手にいちばんいいのは、バグ。コードを読んで、動かして、小さな再現ケースを作って、でも小さくしたら再現しなくて・・・みたいなやつ。小手先のワークアラウンドをせず原因を突き止めて、それを治すと満足。ただしバグの重要度と溶かした時間が釣り合わなくなりがち。
そういう伝統的なバグだけでなく、最近はデータバグ、つまり Data Warehouse とかに入ってるデータが直感に反するとき、色々ブレイクダウンしたりパイプラインのコードを睨んだりして謎を解き明かすのが楽しい。
デバッグは人に聞いても答えが出ないことの方がおおく、バグの重要度が低いなら合理的な判断はしばしば「ほっておく」だったりする。でも、直すと満足。かかった時間のぶん、他の進捗は損なわれてしまうけれど。
誰かに訊けば早いけど自分でやりたいことはなんだろう。たとえば、できるかどうかわからない技術上の可能性を突き止める作業。あるとき Android platform の非公開な API を呼び出したい場面があり、しかし非公開 API の扱いは年々厳しくなっているので「正しい」方法を使う必要があり、じっとコードを眺めたり検索した結果なぜか Java ではなく C (NDK) にだけ 存在する API でやりたいことを実現できるケースがあった。こういうのは嬉しい。
時間を溶かしても楽しくないのは、自分の場合はテクノロジの選定。社内テクノロジとか、しょうじき良し悪しどうでもいい。おまえが使ってるやつを教えてくれマネするから、みたいな投げやりな態度をとりがち。あとは不得意分野でのベストプラクティスみたいなのも、探求の結果いまいちな局所最適に陥る気がして、チートさせてほしい。そういう疑問は、あまり考えず社内コミュニティに質問するようになった。質問できる程度に問題を理解する必要はある。
謎解きの要素がある問題は、謎解きを楽しむのに時間を使いたい。時間を溶かしたい理由の一つはそんな娯楽要素がある。
ミステリの楽しみだけでなく、時間を溶かして特定の問題領域への理解を深めたい時もある。これはデバッグに顕著かもしれないが、ハズレの仮説を積み重ねることで解像度が上がっていく達成感がある。通りすがりの他人が一見正しそうな提案をしたときにきちんと根拠を示して間違いを指摘できると、自分は誰よりも問題を正しく理解しているという束の間の万能感が体を流れ過ぎていく。誰かの考えた正解に従っているだけだと、仕事は進むがこの満足感がない。ついでに、誰かの言うことは割とよく間違っている。
自分は仕事を速くやるだとか大きな成果を出すとかに内的動機を持ってなくて、なにかを解き明かす excitement を欲しているのだろう。会社員としてはある程度の速さで仕事を進めそれなりに成果を出さないと困る。だから必要に応じ人頼みの unblock をすることはある。でも裁量の範囲内で時間を溶かし楽しみを追求しているときは、誰かに聞けなんて無粋なことをいわずほっといてほしい。ちょっと仕事が遅れても大目に見てほしい。