そのプログラム、5年後も保守できる?
よく、このプログラミング言語はオワコンだ、とか、こっちは10年後も現役で使えるだろうとか言われるけど、結局どんなに素晴らしい言語とか技術、フレームワークとかも5年後10年後ってどうなっているかわからない。でもそんな中でプロダクト開発は5年10年って続いていくことを要求されるわけで。じゃあ、そのプログラムを5年10年続かせていくにはどうしたらいいのっていうのを考えてみた。
技術は栄枯盛衰
技術は流行り廃りがある。この流れを変えるのは難しいし、技術の正常な発展のためには栄枯盛衰があって遺伝的アルゴリズムのように、流行らないものは自然淘汰されていくべきだと思う。でも、古い技術・プログラムは無価値か?というとそうでもない。そこには現役であるビジネスロジックを支えているだとか、エッジケースでは大きな存在感を示す場合があるとかあると思う。
綺麗に書く、わかりやすく残す
そこで、ソフトウェアにあっては先々ちゃんと保守されるためにはスパゲッティコードを減らしていくことが重要なんだと思う。ここでいうスパゲッティコードは「GOTO文が多くて〜」というような意図ではなく、複雑に絡み合っていて、ぱっと見仕組みがわからないというような意味で言っている。
言語や技術によって読みやすいスタイルやロジックがあるだろうし、それはそれでいいと思う。でも、見た目を気をつけるとか、単純な変数名の命名が悪いとかそういうので読みにくくしてはいけないと思う。この辺の可読性みたいなことはリーダブルコードという本が詳しい。
そして、ドキュメントを備えておくというのもとても重要。伝統の秘伝のタレは口伝でもいいかもしれないが、ソフトウェアの秘伝のタレは是非ともドキュメントが欲しい。ドキュメントが備わっていれば、自分の手から離れた後に大改修をすることになっても、その技術が枯れてしまってレガシーとなってしまっていても、全く手の打ちようがないということは防げるはず。
体感コーディングとドキュメント残すっていうのが5:5ぐらいになっているのが正常なのかもなって思うことがある。ただ、ドキュメントの方は叙述的コードみたいなやりようもあるし、自動ドキュメントとかもあるしで工夫のしようで圧縮はできるかもしれない。
くら寿司
久しぶりにくら寿司に行ったらわさびが袋入りになっていた。個人的には袋から搾り出すの苦手だから複雑な気持ち。まあ、衛生的で気持ちよく食べれるようになったことは言うまでもないですが。