プログラムが動くのが1割で、残りの9割って何だろう?って思って書いてみた。

ぼけーっと、自分の中に、観点とそのレベルみたいなんがあるなぁって思って。書いてみた。

  • A: 動く
    • A-0: 動かんよ!
    • A-1: とりあえず動くよ!
    • A-2: 動くことをテストで確認してるよ!
  • B: 異常系
    • B-0: 正常系しか考えてないよ!
    • B-1: 想定内の異常系が考慮されてるよ!
    • B-2: 想定外の異常系でも不整合が起きないよ!
  • C: サービス運用
    • C-0: サービス運用がまわらんよ!
    • C-1: サービス運用がまわせるよ!
    • C-2: サービス運用がなくてもまわるよ!
  • D: コードの保守
    • D-0: 読めん!
    • D-1: 変数やクラスに適切な名前がついているよ!
    • D-2: コードを読めば意図が伝わるよ!

ドヤァ!

1日でできたぞ!どやぁ!って感じで。たぶん、このときが一番コード書けてるように思えるので一番楽しい。

  • A-1: とりあえず動くよ!
  • B-0: 正常系しか考えてないよ!
  • C-0: サービス運用がまわらんよ!
  • D-0: 読めん!

リリースできた!

こんな組み合わせだとバレずにリリースできてしまう。そして、サービス運用が回らなくて白目。

  • A-1: とりあえず動くよ!
  • B-1: 想定内の異常系が考慮されてるよ!
  • C-0: サービス運用がまわらんよ!
  • D-0: 読めん!

サービス運用が回るぞ!

なので、運用を考え始めるよね。

  • A-1: とりあえず動くよ!
  • B-1: 想定内の異常系が考慮されてるよ!
  • C-1: サービス運用がまわせるよ!
  • D-0: 読めん!

読める!

  • A-1: とりあえず動くよ!
  • B-1: 想定内の異常系が考慮されてるよ!
  • C-1: サービス運用がまわせるよ!
  • D-1: 変数やクラスに適切な名前がついているよ!

自動テスト!

  • A-2: 動くことをテストで確認してるよ!
  • B-1: 想定内の異常系が考慮されてるよ!
  • C-1: サービス運用がまわせるよ!
  • D-1: 変数やクラスに適切な名前がついているよ!

処理中にサーバーが落ちた

とか、ネットワークエラーとか。そういうときでも変な状態にならないよって。本当にレアなケースだったりするし、一生出会わないかもしれないけど。

  • A-2: 動くことをテストで確認してるよ!
  • B-2: 想定外の異常系でも不整合が起きないよ!
  • C-1: サービス運用がまわせるよ!
  • D-1: 変数やクラスに適切な名前がついているよ!

開発スピードを落とさない

いまDDD取り入れて、ここをやろうとしてるところ。

  • A-2: 動くことをテストで確認してるよ!
  • B-2: 想定外の異常系でも不整合が起きないよ!
  • C-1: サービス運用がまわせるよ!
  • D-2: コードを読めば意図が伝わるよ!

サービス運用なし!

全部自動でリカバリーしたりするように。これを目指したいところ。

  • A-2: 動くことをテストで確認してるよ!
  • B-2: 想定外の異常系でも不整合が起きないよ!
  • C-2: サービス運用がなくてもまわるよ!
  • D-2: コードを読めば意図が伝わるよ!

そんな感じかなー。

リリースレベルの人がうちのチームにくると「なんでそんな細かいことを議論してるんだ?」って思うかも。

「自動テスト」は「コードが読める」より先かモナー

なんか今日あったかいね。