日々常々

ふつうのプログラマがあたりまえにしたいこと。

ベタープログラマ第二部の感想

第二部「練習することで完璧になる」を読みました。

読んだのは15,16,17,19,22章。15章は16,17章を読んでたら「我々のチームの三つの規則」として触れられてたので。

15章 規則に従って競技する

いろんな規則があるけれど「自分達で決めた規則が必要」とあります。規則は自分達のためにあるってやつですね。著者のチームでは以下の3つの規則が挙げられています。

  • 単純に保つ
  • 頭を使いなさい
  • 変わらないものはない

これらの規則についてはそれぞれ別の章で語られていて、15章は規則のありかたが書かれています。この章で重要なことは、要点の囲みにも挙げられているこれだと思います。

曖昧で記述されていないチームの「規則」に頼らないでください。暗黙の規則を明示して、コーディングの文化を統制してください。

たまに見るのが、暗黙の規則が勝手にあると思い込んで「こうしないといけないと思っていました」「こうするものじゃないんですか?」というの。自分の書いたコードを説明するのを阻む、思考停止の臭いがします。こういうのを私は「呪い」って呼んでて、その解呪の方法の一つかなと。そもそも自分達で自分達のための規則を作れるなら、そんな呪いにかからないと思うけど。

16章 単純に保つ

KISS(Keep It Simple, Stupid)のことかと思ったし、確かにKISSについて書かれてました。けど単純とは何かってところに踏み込んでます。昔似たようなこと書いたなーと思ったので引っ張り出してみる。

コードに凝れば凝るほど、コードはシンプルになり、言われるような "凝ったコード" から離れていくと思う。

さて、本では単純さを「誤った種類の単純さ」と「正しい種類の単純さ」の2種類に分けています。

「誤った種類の単純さ」は、物事を単純に捉えてしまうことで「極度に単純化されたコード」を生み出し、逆に物事を複雑にしてしまうことになると書かれています。これは心当たりがある方も多いでしょう。そして「正しい種類の単純さ」を保つためにどのようなアプローチをとるかが挙げられています。

コードのエントロピーも増大していくものです。ですが、増えるのを放置して手に負えなくなったらスクラップ&ビルドする以外にも、抑える方法はあるはずです。私の場合、例えば修正前後のコード量を見ます。コード量が想定以上に増えていないかってところですね。なんなら機能追加してもコード量が減っていなかったら、余計な複雑性を作り込んでいないかを確認します。数字はあくまで指標の一つでしかないので、使い所に注意は必要ですが。

17章 頭を使いなさい

この章は16章を前進させる規則ですね。曰く「Keep it simple, stupid. don't be stubid.」と。愚かになるのは典型的なギークの問題であr、コーディングの専門家でもやってしまうのだから、仕方ない。でもそれは愚かなままでいていいと言う意味ではありません。ちょっと時制に込められた意図が読み取りづらい章だなーとは思いましたが、勇気を出して失敗を認めて誤りを直そう、とかそんな感じです。愚かなコードや設計をしたからといって、「自分を失敗者と考えないでください」とあります。失敗はしていい。

「愚かなコードを書かないでください。」「不注意にコードを書かないでください。」などと書かれていますが、これはちょっと難しいかなー。書いたコードを落ち着いて見直して、直したい。私は。

さて、この章で抜粋したいのはこの文章。

あるコード部分に取り組むときには、その形と構造に関して意識的な決断を行なってください。コードを所有してください。そのコードに対する責任を持ってください。

「意識的な決断」や少し前に使われている「説明責任」などは普段使っている言葉に近くて共感を持てました。 コードをどまんなかに // Speaker Deck とかで言ってるつもりです。

19章 コードを再利用するケース

再利用のケース4種類が挙げられて、それぞれについて考察されています。一つ目の「コピー&ペースト」はすごく嫌ってますね。ウェブ上で見つけたコードをそのまま貼り付けるな、とかも書いてます。なんか微妙な感じのコードがコミットされてる時とか、それをググったらコメントまで一致するのが引っかかってくるとか、たまにありますね。ああ言うのをやめてほしいなーってのは同意。でもコードのコピペ自体は私はよくやるんだよなぁ。昨日もやったし……。

22章 凍結されたコードの数奇な人生

コード凍結に対する、どのようなものがコード凍結と呼ばれるものにあるかが整理されています。もちろんブランチ戦略による凍結のない世界についても語られ、凍結しない世界を目指してほしいとも書かれています。

この辺はいまだに過渡期だなーと思います。凍結せずにできているもの、凍結させずにできないかと試行錯誤しているもの、凍結ありきから変化しない動こうとしないものも多くあり、その中には凍結しないことがメリットにならないものもあります。とはいえもはや凍結ありきの世界観ではないので、対応できる術は持っておかなきゃでしょうね。

第二部の感想

普段言ってることに近いこともあってか、正直薄味でした。どの章も短めだったし。他の人に説明するときの語彙は増やせたかなーくらいで、この部に書かれてることから新たなことを見出すのは難しい感じでした。見落としてるだけかもしれないけれど。

一方、ここまで書いているようなことを「はいはい、あのことねー」とならない方は読めば知の高速道路に乗れるかもしれません。エッセイだけあってちょっと他の本には書かれてないものなので、お勧め。

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック