変更は1つずつ

「変更が2つ以上」とはどういうこと?

コードの修正を行っていると、「あれ、ここもイケてない…直さないとな…」と気づくことがある。このこと自体はとても良いことなのだが、「一緒に修正してしまえ」とやろうとすると、結構な確率で何をやっているのかわからなくなり、「…想定通りに動かない。 git checkout して一回戻すか…」となってしまうことがある。

あるいは、「機械学習の結果が芳しくないな。データセットのココが改善できるのと、特徴量もこれはいらないな」と同時にやってしまうと、「結果が良くなったけど、データセットの作り直しが効いたのか、それとも特徴量の選択が効いたのかわからない」ということになってしまうこともあるだろう。

全く別の観点からは、「今年は読書と英会話と、あとランニングを頑張るぞ」と言って全て同時に始めたところで、全てを続けることは難しいものだ。

「変更は1つずつ」にすることで、物事を整理する

これまで記述してきた3つをまとめて、単一の観点で述べるのは難しい。1つ目は、人間のマルチタスクの難しさを示しており、2つ目は因果関係が不明瞭になってしまうという問題を抱え、そして3つ目は人間の現状維持バイアスの強さが関係している。しかし、これらに対する共通の解決策は、「変更は1つずつ」にしろということだ。

コード修正であれば、気付いたらどこかにメモしておいて、今やっているコード修正を終えてから取り組めば良い。機械学習なら、とりあえずどのポイントが修正できるかをリストアップして、優先順位をつけて取り組めばいいだろう。新しい習慣を身につけるのなら、1つずつ、一番身につけたい習慣から取り組めば良い。

そんな時間はないのだけど…

ただ、時には「そんな悠長にやっている時間はないんです」ということもある。その時には、この「原則」を無理に守る必要はない。

しかしながら、考えて欲しい。同時にやって15~90分かかる場合と、個別に対応することで常に30分かかる場合では、どちらの方が良いだろうか?同時にやったとしても、15分で仕事をやり遂げるという自信はあるだろうか?

少しでも不安になるのなら、なるべく分割して、「変更は1つずつ」の原則に戻るのが良いだろう。