複雑にしたくない
🏇
ルールでもシステムでも家具の配置でもなんでもいいんだけど、複雑にするのはよくないと思う。結果的に「複雑になってしまう」のは仕方ないけど、複雑にならないために、もがいてみたい。
プログラムの世界では、複雑すぎて中身が把握できない、修正が難しいシステムやプログラムのことを「技術的負債」と呼んだりするけれども、似たような話はいたるところに転がっている。例えば、会社にたくさんの部署があり、各部署間での仕事が互いに大きく依存していたりすると、「この仕事のこの部分は、どこでやってるんだろう?」とか「業務フローを変えたいんだけど、どの部署に声をかければいいんだろう?」みたいなことが起きてしまう。普段の仕事はまわるから問題にならないんだけど、いざ何か変更を加えようとすると問題が発生してとまってしまう。こういった「組織的負債」というのもある。
以前、成人年齢を18歳にする法律の話が出たときに、多くの法律への影響が話題になった。法律は多くの例外に対応しないといけないし、分野に応じて関係する人が異なってくるから複雑にならざるを得ないけど、複雑さを落とす努力は必要だと思う。法律の複雑さについては、ここの記事とかでも取り上げられている。
著作権法はプログラムにするとバグりやすい ドワンゴ川上会長 Developers Summit 2015 基調講演 - 週アスPLUS
まぁ、何であれ、複雑に入り組んだものは、中身の把握や修正が難しい。
複雑にしないためには、「ルールの少なさ」と「例外の少なさ」が重要だ。しかし、この2つはたいていの場合、相反する。よくあるのは、「例外が起こるたびに、それに対応した行き当たりばったりのルールを追加する」というものだが、少なくともこれは避けたい。例外の数だけ、ルールが増えてしまう。
「ルールの見直し」は、根本のルールが変わった時や、問題が起こった時に行われる。しかし、「複雑さが増してきたから」というのも、ルール変更の事由になると思う。
少なくとも、自分が作るものは複雑にしたくない。時間がたって複雑になってきたら、定期的に簡略化しようと、もがくようにしたい。