会社にデバッグの早い人と遅い人がいる。
二人を観察していると、色々な違いが見れて勉強になる。
いくつかまとめてみる。
・デバッグが早い人はコードに着手する前に状況を整理する
期待動作はどのようなものか、現状の動作(バグ)はどんなものか、どんな条件でバグが生じるか、生じないかを整理する
他人からアサインされたタスクの場合、手早くこれらを質問して状況を確認する。
デバッグが遅い人は何も考えずにコードを触り始める。
「何をデバッグしているの?」と聞くと言語化出来ない。
場当たり的、五月雨式に質問する。
・デバッグが早い人は仮説を持っている。
ざっくりと全体像を把握し、当たりをつけてから作業する。
全ての作業が仮説の検証作業。結果が出た時に次に何をすべきかも把握している。
デバッグが遅い人は自分でも何をやっているか分かっていない。
「よくわからないけど一応2回試してみた」とか言う。
「それは今何を検証しようとしているの?」と聞くと答えられない。
・デバッグが早い人はメモを取る。
デバッグが遅い人はぐるぐると何度も同じ検証を繰り返す。
「さっきは大丈夫だった」とか「さっきと一緒なのに動きが違う」とか言う。
・デバッグが早い人は事実と仮説/予想を明確に分ける
デバッグが遅い人は想像と事実をごっちゃにする。
・デバッグが早い人はツールを使いこなす
強力なLinuxコマンドやエディタ/IDEのショートカットキー等の基本的な使い方が身に付いている。
地味に塵も積るで一日で見ると大きな時間差が生まれる。
・デバッグが早い人は一気にやろうとしない
パラメータが複数あるとき、一気に変えない。一作業一仮説。
デバッグが遅い人は一気に複数箇所を変え、差分や状況がわからなくなって途方にくれる。
・デバッグが早い人は熱くならない
デバッグが遅い人は作業に熱くなって細部にハマっていく。
デバッグが早い人はハマりそうになったら一息おいて状況を整理する。
観察してて大いに学んだ。
考え方ややり方はデバッグが早い人を見習って自分も少しは効率的にはなった。
しかし筋の良い仮説を初期段階で立てられるかどうか、というところが経験か才能なのか、まだ追いつけない。