プログラミングとゆっくり急げ

2024年10月23日
プログラミングとゆっくり急げ

僕の好きな言葉に「ゆっくり急げ」という言葉がある。 これは、ラテン語で「Festina lente」といい、初代ローマ皇帝アウグストゥスが好んで使った言葉だそうだ。 この言葉が2千年を超えて、現代まで使われているのは、 古代から現代まで、人類はいつの時代も急ぎすぎて失敗してきた証だと思う。

日本においても、「急がば回れ」とか、「急いては事を仕損じる」といった諺があるけれど、 「ゆっくり急げ」という言葉は、迅速さの重要性も同時に強調している。

「ゆっくり急げ」という言葉は、一見すると矛盾しているように思える。 「ゆっくり」なのか「急げ」なのか、どちらなのかと混乱しそうだ。 ただ、この格言が伝える通り、仕事を丁寧に進めたいが、同時に素早く進めたいというのは、 現代においても、たいていのケースで当てはまると思う。

• • •

「ゆっくり急げ」は、開発現場において不作法を戒める、ちょうど良い言葉だと思う。 プログラミングは、急ぎすぎても失敗するし、ゆっくり慎重すぎても進捗が滞る。

たとえば、僕の中では「ゆっくり」は以下の行動を意味する:

  • 読みやすいコードを書く
  • ユニットテストを書く
  • リファクタリングを行う
  • ドキュメントを整備する
  • CI/CDを導入する
  • 機能をリリースした後に効果測定を行う

一方で「急げ」は、以下を意味する:

  • 早めにリリースする
  • 早めにユーザーのフィードバックをもらう
  • 最小限な機能を実装する
  • 不必要に柔軟な設計、抽象化を行わない

つまり、コードの品質は重視するけれど、同時に素早くリリースすることも大切と思っていて、 これを一言で表すと「ゆっくり急げ」となる。

アプリ開発、システム開発では、半年から数年単位でプロジェクトが進行するため、 長期的な時間軸で考える必要があり、 後先考えずに作ってしまうと、結局後から機能追加や修正コストがかかってしまい、 丁寧に進めていた方が良かった、と振り返ることはよくある。

一方で、ある程度の時間的プレッシャーは必要で、 それがないと過剰な設計をしてしまったり、 必要のない技術的な挑戦をしてしまったりして、単に遅い以上の不具合をもたらすこともある。

僕はプレッシャーがなければ、ゆっくりの方に偏りがちだけれど、 時間的なプレッシャーが強くかかってくると、急ぎすぎてしまうこともある。 余裕がないときこそ「ゆっくり」、余裕があるときは「急げ」の精神で、 普段から「ゆっくり急げ」を意識したいと思う。