読者です 読者をやめる 読者になる 読者になる

未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

生産性の話題で思ったこと――正確にコードを書くことも生産性の上で重要かも

紹介するのを忘れてましたが,共有リポジトリの開発はここでやってます.

GRGSIBERIA/mixture · GitHub

 

今のところテスト書きながらもくもく開発している感じです.

特に,Modelをいくつか作ってRSpecでテストしながら開発をしています.それ以降は,試作システムだけできればいいと思っているので,フロントエンドとかUIとか度外視して,とりあえずコンソールからAPIのようなものを叩ければなといいと思ってます.

基本的に,きちんと動くかどうかは,割りとModelが握っているような気もするので,なるべくテストをやろうと思っていますが,新しいコードを書くと自分でもびっくりするようなtypoを見つけたりします.

例えば,Tag.where(["id = (?)", tags])みたいな.よく見ると,イコールじゃなくて in と書くべきところです.自分では in と書いているつもりなので,意外とバグの発見が遅れたり,無駄な修正をやってテストを繰り返したりと,ちょっと時間がもったいないです.

この無意識のバグは恐らく,正確に書くための訓練をやっていなかったのがひとつの問題なんじゃないかなと思います.例えば,汎用コンピュータの前で順番待ちしているような時代では,バグを出したらまた後ろから並び直さなければならないので,かなり慎重にデバックしたとかどうとかという逸話があります.

最近はコード追うより実行すればさっさと結果が出てしまうので,汎用コンピュータの例のように,じっくりと正確に書く訓練をするようなことが減ったんじゃないかなと.正確に早くコードを書くことができれば,くだらないタイピングミスや演算子のミス等もなくなり,そのデバッグのために1時間や2時間も費やす必要もないんじゃないかなぁ,と思います.

生産性の問題で考えると,このミスをするかしないかで,生産性は何倍も違うんじゃないかなと.もちろん,言語の文法やきれいに短くわかりやすく書くことも重要ですが,これらはやっぱりかけ算の関係にあると思うので,いくらきれいなコードを書いても,ミスが多ければ全体の足を引っ張ってしまうこともあり得るんじゃないかなと.

でも,これは結構,当たり前のように見えますけれども,リーダブルコードのように綺麗に書く方法は体系化されていても,正確に書く方法はあまり体系化されていません.ペアプロでミスの発見は早くできるかもしれませんが,プログラマが二人ぐらい必要なので悩ましいところです.

魔法をかけられるとミスがなくなると本当に嬉しいんですけどね.