日々常々

ふつうのプログラマがあたりまえにしたいこと。

正常な状態を保つのは大変

正常な状態を保ち続けるのは大変だと言うことを、保てるようになると簡単に忘れちゃう。

正常な状態?

  • デプロイが成功する。
  • テストが通る。
  • コンパイルが通る。
  • ERRORWARN のログが出ない。
  • ビルドがすぐ終わる。
  • すべての変更がバージョン管理されている。

あげるてるとキリがないけど、ここで言う「正常な状態」がどんなものかは伝わると思う。 何を正常と言うかはその場その時で変わるけれど、少なくともコンパイルできない状態を正常とは言わない。

崩すのは簡単

正常な状態は簡単に崩せる。コンパイルエラーにするためには適当な文字を1文字足すか消すかするだけ。でも誰も崩したくて崩さない。

崩れてしまうことってある

変更途中は崩れるもの。仕方ない。

正常な状態を保つのはコストがかかるし、そこに気を取られると遅くなってしまう。スピードが大事。仕方ない。

なりふり構わずにゴールを目指してる間は崩れててもいい。仕方ない。

……ほんとに仕方ないのかなって。

正常な状態は保てない?

スポーツ選手とかエキスパートのフォームって綺麗だと思うんですよ。 ホームラン打った瞬間のバッターの写真とか、マラソンランナーのフォームとか。

全力でやると姿勢が崩れると言うのは素人なんじゃないかなと思ったりする。

私の感覚

デプロイはいつも成功してて欲しい。環境構築時とかは結構落ちるけれど、安定飛行をはじめたら滅多に落ちない。たまに失敗した時は大事件で大慌てするし、次から起こらないようにテストを作ったりする。

テストが通るのは当たり前。なんだけど、私は結構テストはカジュアルに落とす。TDDerだってのもあるけど、「とりあえずテスト実行してみよう!」とか言ったりして、そんなノリで実行するから当然のように落ちる。むしろテストは落ちてこそ、落ちた時が仕事した時とか思ってたりする。テスト駆動開発を継続するで話した内容……2013年ですね。

かと言って「テストが落ちたままにする」は違くて。テストが落ちたらすぐに直す。正常な状態にする。 テストが落ちる崩れた状態で、他のことをしてさらに崩れたら、正常に戻ったと言えなくなっちゃうから。

コンパイルが通るのは流石に当たり前だよね。 と言いたいんだけれど、コンパイルが通ってない瞬間ってのは案外ある。瞬間を切り取れば。 コンパイルが通っているのが当たり前の人には意外かもしれないけれど、コンパイルエラーが発生した状態でそれを解消せずに他のコードを書き続ける人もいたりする。

冒頭に列挙した「正常な状態」が崩れているのは、姿勢が崩れた状態で走り続けてるように感じる。とても落ち着かない。 プロスポーツ選手の例をみれば、フォームを整えた方がいい成績に結びついている(はず)。 綺麗なフォームだとうまく走れなくて遅くなると言うのは、練習不足とか筋力不足とか、フォームが身に付いていない状態なんだろうなと。

実際のとこ

「正常な状態」が開発速度や精度を向上させていることは、崩された時に初めて感じる。 そう言う時に自分が正常と思っているものがそうでもないって世界があることに気づく。

他の人から見たら私も「それくらいできてないの?」と言われるようなこともあると確信してる。 「正常な状態」が崩れているように見えていても、崩れている側はそもそも「正常な状態」を認識できていないとかもある。

できる状態が普通になると、意識して取り組んでいるうちは大変なことを忘れてしまう。 できていない人には大変なのに、できる人には簡単。このギャップが厄介だなぁと思ったり。

どうしたものかなぁって、もやもや。 まとまらないや。