最近の締め切り
ちょうど最近、締め切りがあって、それに向けてちょっと頑張っていた。外部から見たら「なんだかあやしい比較だなあ」と思うであろう内容であるが、内部でちょっとでも恥ずかしくない数字を出そうとやってた僕としては、それなりに誠実にやったという感もあって、まあそれなりに満足している。
これは学会発表と同時に、今までの成果を「続きはブログで!」式に公開しようという趣旨で、どちらかというと、 kzys さんの言う「人工的に発生させた締め切り」だと思う。特にこのタイミングで数字を発表しないといけない、という必然性は特にない。
個人的にはこういう、締め切りのために焦ってなんかをする、というの、必ずしも悪くはないと思っている。今回でいうと、「今あるもので、どのへんまでいけるか見てみましょう」的に、現在ある各コンポーネントのポテンシャルの限界を確かめることができた。その際に、締め切りがあるので、ポテンシャルを引き出してる最中に発見された中期的な問題は見て見ぬふりをされているのだけど、この中期的な問題ってある程度切迫した状況を作らないと発見されなかったりするので、有意義だったりする。具体的には、今回だと、限界までパフォーマンス出そうとすると、モデルをコンパイルする時間がすごく伸びて、かなり苦痛だということがわかったので、次はちょっと全体を見直して、コンパイル時間を改善しましょう、みたいな課題を得た。
締め切りが連続すると辛いと思う
今回の締め切りは、なかなか良いものだったように思っているのだけど、この種の締め切りが連続するのは、あまり良くないと思う。まず第一に、 karino さんが言っているように、楽しくない。プレッシャーがかかりすぎるとつらい。
次に、締め切りが連続すると、どうしても急いでやらなくて良いような改善、典型的にはリファクタリングなどが後回しになって、結局開発効率の面でも悪くなってくる、ということがあるように思う。
例えば新機能をリリースするための締め切りのためにうわーと頑張ったのであれば、ちょっとサボって英気を養ったり、後回しにしたリファクタリングをしたり、今後のために全体の構成を変えられないか検討したり、 CI を改善したり、そういうことに時間を使えると、中長期的に良いように思う。
シャクトリムシスタイルは色んなとこで良い
こううわーと背伸びして機能実装などをした後に、ちょっと時間を取って足もとを固める、みたいなの、シャクトリムシぽいなって思ってるのだけど、このスタイルは結構いろんなところで使える働き方なんじゃないかな、とか思っている。
すごいミクロな点では、 PR を一個作る時なんかでも、割とみんなよくやってるんじゃないかな、と思う。「とりあえずたぶんこんな感じ……?」とコードが汚なくなることはお構いなしで、場合によってはそこらじゅうに printf デバッグとか埋めまくりながら、コミットログとかも無茶苦茶で、とりあえずテストが通るところまで書いて、そこから頭を整理して、コミット履歴綺麗にしたり、関数を切って、コメントとかも書いて、いらないコードは消して、みたいなのはよくやることだと思う。これ、最初から PR にできるような綺麗な形でやろうとすると、方針が間違っていた場合とかに、すごく時間がムダになったりする。
マクロな話に戻ると、前職では、昇進戦術として、このスタイルが有用なんじゃないかという話をよくしていた。昇進するか否かのレビューって、だいたい1年くらいの成果を見て行なわれるので、昇進する気が無いタイミングであれば、あまりマジメに仕事をする意味がないので、適当にサボって英気を養っておけば良い。そうこうしているうちに、昇進しやすそうなプロジェクトが始まったりすると、溜めておいた力でたくさん仕事をして昇進を狙う、みたいな。あとプロジェクトの最初でなるべく活躍する、とかも良いよね。後になって多少サボっていても、「最近見ないけど、なんか有益なことをしているだろう」みたいな印象を持たれていれば勝ち、みたいな。なんかずるい話ではあるけど、この手のシステムはハックされるもんですしね……
なんかこういうの、既に名前がついてるライフハックな気がするけど、なんかあるのかな。