コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

よい当たり前を維持する努力

日曜日なのでちょっとポエミーな雑記です

急場しのぎのコード

「リリースを急がなければならない」

この言葉が免罪符となり、分割がちゃんとなされていないロジック、そばしのぎのマジックナンバー、再利用性を無視しした同一意義のメソッドの乱立、そしてかかれないテストコード。このようなコードが時たま見受けられる。そしてそこをレビューで指摘すると返ってくる言葉は

「価値を届けることが大事で、ソースコードが汚くても仕方ないでしょ」

評価ポイントのズレ

その場ではユーザに影響のないコードだとすれば、影響が出るのはどこか、それは「次に修正するとき」である。最初のコードを作る人は無から有を作ることが評価ポイントになりがちで、それが持続的に正しく運用できるかは評価ポイントにはならない。なぜなら新機能を提供することがビジネス的に求められていることであり、それがない限りは持続できるかすら怪しいからである。

両立させることが真にできる開発者

「次の修正」つまり「変化させやすいコード」というのと「価値の提供」というのは両立できないかというとそうではない。特にRailsのようなフルスタックフレームワークは価値を提供するベースの機能はフレームワークが用意しているので、そのレールに乗れば速やかに提供できるし、そのレールの範疇であれば変化にもある程度は追従できる。それができるかできないかを左右するのは何かというといろいろ考え方はあるとは思うが、大きく影響するのは環境ではないかと思う。

「当たり前」を正しく持つ

日々の行動は無意識にできるようになれば、そこに対して抵抗感のようなものはなくなる。「当たり前」として正しい習慣をインプットしてしまえばいい。「再利用性を考える」「テストコードを書く」「マジックナンバーは使わない」どれも当たり前に、普通の行動として染み込ませていけば使うことは無くなる。その当たり前を育むのは個人の気持ちの持ち方という部分もあるが、それを継続的に実現させるのはそれを是とする環境ではないかと思う。

「当たり前」を「当たり前」に維持できるように

「当たり前」はいいかえれば「常識」である。その環境の常識として根付かせるには全員の共通の見解とする必要があるし、その環境に革命家が訪れたら常識は一気に覆る。なので常識を常識として維持する努力を怠ってはならないし、その常識がちゃんと維持すべきものかは常日頃から見極めながら、育んでいかないといけない。

参考リンク