My Solo Project (2)
自分はそこそこ自律的に仕事をしやすい職場にいるとおもう。とはいえ完全に好き勝手できるわけではなく、所属しているチームや製品の方向性や自分の身の丈にあった仕事を考えないといけない。チーム内での地位やカルマの溜まり具合も関係がある。何事にも不確実性はある。不確実性に伴うリスクがどれだけとれるかはその人の実績で決まる。このフェアさは妥当だと思う。そのほか上司のマイクロマネッジ指数やチームの性格、部門の景気なども仕事の自律性に影響を与える。これらはフェアネスよりも運の部類。
自分はまあまあ運が良い気がする。今のところ割と勝手なことを勝手なペースでやっている。一方で自分のプロジェクトを誰かに手伝ってもらえる実績や ambition もない。結果として一人で自分のプロジェクトを進めることになりがち。アーキテクチャを刷新してぜんぶ倍速くしますみたいなアイデアと実力があればチームをリードすることもあるだろうけれど、残念ながら特にアイデアはない。実行可能なアイデアの不在は自分の実力のほどを表しているとおもう。
だから自分にとって、やることを決めて仕事をするのは一人プロジェクトと対になっている。一人プロジェクトにはチームをリードしてなんかやる的なかっこよさはない。一方でよいところもある。人々と協調しなくていいぶん締切や設計を柔軟に変えられる。他人の仕事を止めるわけにはいかないから間に合わせなければ...といった気苦労がない。前もって慎重に決めた API にコミットする必要もない。
End-to-End でぜんぶコードを書く満足感もある。システムの全体像を見通し、その理解をもとに物事を判断できるのはいい。正しい感じがする。サーバとクライアントでチームや担当者を分けるのが前時代的だという指摘がされてから随分たつけれど、ようやく身を持ってそれを理解できた。
待たされる
一人プロジェクトに特有の欠点や苦労もある。
一人プロジェクトとはいえ、チームや関係各位にはそこそこ世話になる。典型的にはコードレビューを頼まないといけない。それらの人々にとって、自分の一人プロジェクトは割とどうでもいい。同じプロジェクトのメンバー同士なら互いに依存があるから協力しあう動機がある。一人プロジェクトは依存が一方的だから、レビュアには善意と責任感以上の動機がない。だから彼らの本業が忙しいと一人プロジェクトは後回しにされがち。道理にかなった判断とはいえ、あまり放置されても仕事が進まず困る。
誰かの仕事をブロックする心配がない一方で他の人には始終ブロックされるのが一人プロジェクトのつらいところ。催促は嫌われない程度にしつこくするとして、他になにができるだろう。
ブロックされる一般の仕事の進め方は大きく二つある。一つは並列度をあげること。並列にできる作業をいくつか持っておき、一つがブロックしたら別の作業を進める。もうひとつは投機すること。レビューを待たず作業を進める。レビューの結果コードが変わったら、先に進めておいたコードもあわせて直す。ただ並列に進められることにも限度があるし、投機的なコードを書くにも根性がいる。レビューの結果次第でまるごと無駄になることもあるから。自分はどちらもさほどうまくない。
並列してやる作業の候補としてチーム全体の仕事を手伝うのは手だと思う。担当が決まってない地味で退屈なバグをなおすとか、コードを書く手前でバグのトリアージを手伝うとか。コードレビューをするのもいい。一人で仕事をしているとチームとの結束が薄れがちなので、待ち時間は利他的に使うと割りきり雑用を引き取るとなんとなく絆が深まる。待たされているレビュアが TL などの忙しい人なら、その人の仕事のうち一部を引きとってみてもいい。
こういうボランティア精神をいつも発揮できるといいんだけれど、実際にはなんとかブロックを回避して本業を進められないかとあがいて時間を無駄にしがち。モラルが足りてない。
ふらつく
一人プロジェクトは方向性が揺らぎがちでもある。これは自分の性格や未熟さかもしれない。決めたゴールの正しさへの確信がふと消えてなくなる。正しく定義したつもりのゴールが曖昧だったと気付く。あるいは期待するほど成果がなさそうとわかる。ゴールを決めるための探索的な作業にずるずると時間を使い、ミイラとりのミイラになることもある。
大きな不確定要素から片付けていく。手応えを確かめながらインクリメンタルに進む。不確かさを相手取る仕事の進め方はよく議論された話題なので特に新しく言いたいことはない。ただ実際にやってみると不確かさからくる不安や動揺は思ったより大きい。他人の仕事を手伝ってばかりだった自分の肝の座らなさにがっかりする。これまで他人に押し付けてきた不確かさが自分のものになる戸惑い。
ブロックしがちな作業と見失いがちなゴール。その圧力を前によく手が止まる。もやもやしたまま何日も無駄にしてしまう。締め切り不在の油断が事態を悪くする。こんなに好き勝手できるのにこんなに仕事がはかどらないなんて、かつては思いもしなかった。仕事中、何をするかを考える時間が増えた。一人プロジェクトのおかげでミーティングはほとんどない。けれど計画や提案をスケッチしたり直近の進捗を眺めて予定を見直すなど、結構な時間をコードを書く手前で使っている。
傍目からはさぼっているみたいに見えまいかと不安になる。コードのコミットの数だけを数えたら誰かに待たされながらバグを直している間のほうがよっぽど順調。ふらついている時間を待たされている時間にかぶせられるよう、試行錯誤のアイデアを備忘録へ蓄えるようになった。
自分でやることを決めて、自分で仕事を進めて、製品がよくなって、上司もチームも自分もハッピー。そんな理想までの距離は遠い。ただ追いかけるには悪くない理想だと思って今のところ続けている。少し肩身が狭い。何しましょうかとボスに尋ねればいくらでも仕事があることはわかっている。でもその日はまだ先延ばしにしておく。かすかな雇用への不安も、先延ばしにしておく。