バグを眺める

真面目に会社員プログラマをする活動の一貫として、社内バグトラッカーのうちチームが own するカテゴリのアップデートを購読することにした。新規登録からコメントまで、何らかの更新があるたびにメールベースで通知が来るのを読む。今までは自分が assign されたやつにだけ反応していた。TL, Manager, TPM などはこのバグを実際に triage している。自分は自明なやつは別として特に triage とかには参加せず skim するだけ。

まあ良し悪しだなと思う。良いところとしては、チームというかプロダクト全体の温度感がわかる。どうもやばい変更が platform 側に入って燃えているらしいとか。どうも特定の人の持っている機能がずいぶん立て込んでいるらしいとか。人々が締め切りに殺到してるせいで不安定だとか。プロダクト全体としてどういう類のバグレポートが多く、それはどういう原因を持つ傾向があるとか。人々がどうやって原因を判断しているとか。

自分のやっているアプリはジャンルの性質なのかコードのせいなのかわからないがとにかくクラッシュが多い。しかし傍目には同じクラッシュでも原因は多岐に渡る。そのほか画面に何も表示されないなど、バグの主要な症状は原因のバリエーションに対しごく限られた種類しかない。人々はその原因をどう判断しているのか。

特に platform / HAL レイヤの TL はバグを次々に triage して自分のチームに割り振っているのだが、一体どうやっているのだろう。まあ bugreport ファイルを読んでいるのだろうけれども、自分の製品に限るとそんなに intellient な automation があるようにも見えないので、時間をかけている以外の方法を想像できない。

話がそれたけど、そういう感じでバグトラッカーは製品の weather を伝えてくれる。そういうのを把握するのは be prepared でよい。

その他に、バグの重複に気付けるというのがある。自分に assign されたよくわからんバグ、実は同じ原因のバグが他に file されていてそっちで議論が進んでいた、ということはよくある。そういうときはさっさと mark as dup すれば手持ちのバグが減る。逆に自分の見ているバグに巻き取ることもある。こうした dedup 作業は理想的には triage している人の仕事なわけだが、実際に問題の中身を知っている実務者(自分)の方が正しく判断できることはあるし、強い動機もある。

重複削除だけでなく、自分の知見によって原因を判断できる(場合によっては直せる)バグがあったりもする。そういうのは他人の triage を待たずさっさと引き取る。


とまあいいこともあるのだけれど、欠点もある: とにかく時間がかかる。そして自分にとって大半の updates はノイズなのですごく効率が悪い。これはツールの不出来という面もあるし、非生産的な文化の面もあるし、単にプロセスのまずさという面もあるし、表面的な原因は一緒なのに原因はフルスタックという製品の性質からくる大変さももあるし、tracking 以前に debug 支援の弱さからくる辛さもある。とにかく disentangle して負担を減らす方法がぱっと思いつかない。辛い。

単純に skimming の雑さを増すことで一定程度は速くできるけれども、今度は取りこぼしが増えて結局単位時間あたりの効率は変わらないようにも思える。いっそ triage に参加して使った時間の元をとろうともしてみたが、今度はかかる時間が倍増しすぎマジで仕事ができなくなってしまい早々に諦めた。

ツール志向な身としてはメールベースはきつすぎるので Jasper みたいのがあればなあと思うわけだが、トラッカーが内製なせいでこういう素敵ツールが現れる見込みは極めて薄い。ただでさえ内製ならではのできの悪さがあるというのに・・・。

この手の notification stream を消化する作業は直接の成果には繋がらないからやりたくないし、特に楽しくもない。自分の従来のポリシーにも合わない。ただ会社員としての成果を出すという今のフェーズでは必要かもしれないと試しにやっている。たしかに発見はある。しかし辛い。マネージャとか TPM とかよく burn out しないなと感心する。続けるべきか否かと悩みつつ、今のところまだやっている。消耗のダメージを最小化するため、午前中の生産的な時間には読まないことにしている。まあ決意しないと読めないのでうっかり時間をつかってしまう類のものではないのだが。

と書き出すと何か思いつくかとおもったけど、残念ながらそうでもかった・・・。しいていえばバグトラッカーは consumer product としてエンジニア資源を突っ込んで作らないと非効率すぎて辛い、くらいろうか。GitHub 使わせろとはいわないけれどせめて Jira とかだったらよかった人生だった・・・。


Jasper みたいな素敵 UI をつくるのはムリだけど、たとえば一定の期間内に発生したイベントを縦に連結した HTML に render するバッチスクリプトくらいなら隙をみて作れないかなあ。

追記

Dogfooding の本格化や新しいデバイスの dogfood 投入などに伴い流量が増えてついていけなくなり、一ヶ月くらいで挫折した。