作業していない時間に、いちばん開発が進むことがある

公開

机に張り付いている時間だけが開発ではありません。歩いている時、風呂に入っている時、寝る前にぼんやりしている時に、むしろ設計のズレや次の一手がはっきり見えることがあります。

開発が進むのは、机に向かってコードを書いている時間だけだと思われがちです。でも実際には、作業していない時間にいちばん前へ進むことがあります。むしろ詰まっている時ほどそうです。歩いている時、風呂に入っている時、コンビニに行っている時、寝る前にぼんやりしている時に、急に「次はこれだ」と見える。あの感じはたぶん、多くの人が経験しています。

これは気合の問題ではなく、頭の使い方の問題だと思っています。机に向かっている時は、どうしても目の前のコード、今出ているエラー、開いているタブに引っ張られます。視野が狭くなる。その状態では見えなかったズレが、距離を取った瞬間に見えることがあります。つまり、離れること自体が開発を止めるのではなく、むしろ開発を戻す動きになることがあるわけです。

この記事の要点

  • 作業していない時間に開発が進むのは、頭の中で問題の整理が続いているからです。
  • 机に向かい続けると、目の前の実装に引っ張られて設計のズレが見えにくくなることがあります。
  • 休息は甘えではなく、判断と切り分けを戻すための手段として機能する場面があります。
  • ただ離れるだけでは弱く、離れる前に何が詰まっているかを言葉にしておく方が効きます。
  • ずっと張り付く人より、離れるタイミングを知っている人の方が結果的に進みやすいです。

机に向かっていると見えないことがある

開発が止まる時は、技術不足より先に視点が固定されていることがあります。前に書いた 開発が止まる原因の話 ともつながりますが、止まっている時ほど人は同じ場所を見続けます。同じコード、同じファイル、同じ UI、同じエラー文。そこに答えがあるはずだと思って張り付く。でも実際には、問題がその外側にあることも多いです。

たとえば、実装が進まない原因がコードではなく、そもそもの完成条件の曖昧さだったりします。あるいは API の仕様ではなく、何を先に切るかの判断不足だったりする。机に向かっている間は `もっと調べれば解けるはず` と感じやすいですが、少し離れると `いや、先に決めるべきことが残っているだけだな` と見えることがあります。

止まって見えても、頭の中では処理が続いている

風呂、散歩、移動、洗い物みたいな単純作業をしている時に急に答えが出るのは、偶然ではないと思っています。作業の手は止まっていても、問題の輪郭だけは頭の中に残っている。だから意識の圧が少し下がった時に、別の見え方が出てきます。

もちろん、何も考えていない時間が全部開発になるわけではありません。ただ、離れる前に `何が詰まっているのか` を自分で言葉にしておくと、その後の非作業時間が効きやすくなります。これは 言語化力の話 と同じで、問題を説明できる人ほど、離れている時間の整理も進みやすいです。

休まないと、開発力ではなく判断力が落ちる

ずっと作業していると、自分では `まだ動ける` と思っていても、先に落ちるのは判断力です。どこから見ればいいか、何を後回しにしていいか、どの不具合が本体でどれが症状か。その切り分けが鈍る。そうなると、進んでいるようで実際には空回りしやすいです。

前に書いた 返答や信用の話 でも、寝不足は会話の質を壊すと書きましたが、開発でも同じです。疲れている時に必要なのは、さらに長く机に座ることではなく、一度頭を戻すことだったりします。休息は作業の敵ではなく、判断の回復手段です。

ただし、離れることを言い訳にすると進まない

ここは誤解しやすいです。作業していない時間が効くのは、ちゃんと向き合った問題がある時です。何も整理せず、何も詰まりを把握せず、ただ机を離れても、それは回復にはなっても開発の前進にはつながりにくいです。

効く離れ方には前提があります。今どこが詰まっているかを書き出す。次の候補を二つか三つまで絞る。完成条件のどこが曖昧か確認する。そのうえで一度離れる。すると戻った時に、`これは今やらなくていい` が見えやすくなります。ずっと張り付く人より、離れる前の整理ができる人の方が強いです。

開発は手を動かすことだけではなく、観察することでもある

個人開発でも受託でも、進む人は作業時間だけで勝っているわけではありません。観察しています。何が重いのか、どこで迷っているのか、なぜ気持ちが進まないのか。そこまで見ています。だから、動く時は短くても濃いです。

公開後の改善の話 と同じで、前に進める人は感想ではなく現象を見る傾向があります。自分の停滞にもそれをやる。`やる気がない` で終わらせず、`終わりが曖昧だった`、`判断が多すぎた`、`疲れていた` と切り分ける。そうすると、休むべきなのか、書き出すべきなのか、実装を小さくすべきなのかが見えてきます。

離れることも、開発の技術のひとつだと思う

作業していない時間に、いちばん開発が進むことがある。これは精神論ではなく、実務の感覚としてかなり本当です。ずっと机に向かっていることが偉いわけでも、常に手を動かしていることが強さでもない。必要なのは、今は押すべきか、離れるべきかを見極めることです。

だから自分は、止まっている時ほど無理に座り続けるより、一度問題を言葉にしてから離れるようにしています。その方が戻った時に早い。開発は入力だけではなく、整理と観察でも進みます。手を止めること自体が目的ではないですが、止めるタイミングを知っていることは、かなり大事な技術だと思っています。

よくある質問

机に向かっていない時間も開発と言えますか?

言えます。考えが整理される、設計のズレに気づく、次の一手が見えるといった変化は、手を動かしていない時間にも起きます。

休むと怠けている気がして不安です。

休息と現実逃避は別です。戻った時に判断が軽くなる、切り分けが進む、次の作業単位が見えるなら、その距離の取り方は機能しています。

止まっている時は何をすればいいですか?

問題を一度言葉にして書き出し、机を離れてから戻るのが有効です。歩く、風呂に入る、別の単純作業をするなどで視点が切り替わることがあります。