日々常々

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

ベタープログラマを読もう

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

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

読みながらブログを書いてみようと思いたちました。去年ポチって届いたまま積んでた。とりあえず今回は目次流しして、部ごとにブログ書いていこうかなーとか思ってます。思ってるだけかも。

どんな本かというと

コードを気にかける人の姿勢みたいなものかしらね。著者はCodeCraftと同じPeteGoodliffeなので、読んだことがある人は想像できるのかもしれない。

対象はたぶん「この本が気になる人」と幅広い感じ。それだけに専門的ではない(「はじめに」にもそう書いてる)、エモい方の内容なんでしょうね。では目次を読みましょか。

目次流し

5部、38章で構成されています。全章を書きだすのはだるいので、部単位でざっと書いていきます。

第I部 you.write(code)

部タイトルが you.write(code) とコードっぽく書かれてて素敵ですね。最後まで部のタイトルはこれで行って欲しい感がありましたが、残念ながら最初だけです。そういえばサインをお願いするとこのスタイルでメッセージを書いてくれる方がいて、格好いいなーと思ってます。

各章のタイトルはそれ一言で内容がわかり、「そうそう」と言いたくなるもの。4章の「取り除くことでコードを改善する」とかをドヤ顔で言うといいかもしれません。5章の「コードベースの過去の幽霊」なんかは、削除していないコードに悩まされる話*1かと思ったら、サブタイトルに「過去に書いたコードから学ぶ」なのでどうも口寄せとかそんな感じのようです。8章の「そのエラーを無視するな!」などから思うのは、エラーを主体に取り扱うのは解決策を扱う本や記事では取り扱いにくいのか、あまり見ない少ない印象なので特徴と言えるのかもしれない。ここは読もう。

内容が予想しづらいのは6章の「航路を航行する」と11章の「テストの時代」、13章の「二つのシステムの物語」あたり。ということで、5,6,8,11,13章を読もうと思います。

第II部 練習することで完璧になる

練習と言われるとアプレンティスシップパターンの「練習、練習、練習」はいい名付けだなと思い出します。

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

練習の方法が書かれているのかなと章タイトルを見て見ると、そうでもなさそう。どうも実戦の中で練習するスタイルのよう?「本番でなければ練習にならない」みたいなことを言ってる方もいらっしゃいますし、それはそれでわかります。隔離されたクリーンな環境での練習は、それはそれで役に立ちますが、予期しないことに極端に弱いものですので。さて、この部は14章の「ソフトウェア開発とは」から始まるので、第I部よりは少し俯瞰した感じ。16章に「単純に保つ」などもありますが、3章にあった「少ないコードを書く」や4章「取り除くことでコードを改善する」を受けて実際どうしていくかとかを書いてそう。19章の「コードを再利用するケース」、再利用はいっとき喧伝されていましたが、悪影響も大きいので取り扱いは慎重になるべきところだと考えています。共通化も同じで、前に書いたエントリ*2とかもその一端ですね。再利用について考察されているものはあまり記憶にないので、ケースが書かれていそうなのは期待。あと気になるのは22章の「凍結されたコードの数奇な人生」かな。コード凍結ってよくあるのだけど、バージョン管理システムを前提としてリリースブランチをもつブランチ戦略をとっていれば不要のはずだし、フィーチャートグルなどの抽象ブランチを活用したアクティブメインラインだと凍結したら開発止まるよなーとか思ってて、そう言う点を整理してくれてるのかなーと。あ、20章に「効果的なバージョンコントロール」があるので、バージョン管理システムの活用は前提、のはず。

17章の「頭を使いなさい」は、うん、まあそう言うことなんだろう。この手の本を読む人に改めて言う必要はあるんだろうか。あれかな、本の内容を真に受けて従えばいいみたいなところへの警鐘?ということで、16,17,19,22章を読みましょかね。

第Ⅲ部 個人的なこと

ふわっとした部タイトルが来た。さて各章は・・・あーうん、エモい。読み物として全体をさらっと読むところな気がする。25章「試験に基づく開発者」は別にテスト駆動開発者のことではなさそう。サブタイトルに自動車運転とか書いてるけど、なにを試験と言ってるのかは気になる。あとは26章「チャレンジを楽しむ」や27章「停滞を避ける」などはテーマとしてはよく言われることで、それに対してどう考えてるかって事が書いてるんだろう。プログラミング言語に対する姿勢についてかかれた29章の「言語への愛」あたりは面白そう。複数言語を学びつつ得意言語があるって人は多いと思うけど、そう言う所も書いてるのかな。得意言語とかを考えると、先にもあげたアプレンティスシップパターンの「得意領域へ撤退」が思い出されます。これもいいネーミング。

ちょっと面白いのが30章の「プログラマの姿勢」で、サブタイトルが「プログラマの健康の改善:姿勢、目の疲労、元気の維持」です。心構え的な姿勢じゃなく、物理的な姿勢のようですね。テスト駆動開発でKentBeckが「Cheap Desk, Nice Chair(いい椅子を買え)」と書いていたのを思い出します。

テスト駆動開発

テスト駆動開発

第Ⅳ部 成し遂げる

この部は31章「一生懸命ではなく、賢く」、32章「完了したときが完了」、33章「今度こそ分かった……」の3章だけです。だけどよく似たような事を人に言ってる気がする(自分できてないくせに)。そんなタイトルが並んでるので、全部読むかな。

第Ⅴ部 人々の営み

チームワークについて、この部も少なくて5章だけです。いずれも気にはなるけれど、特に挙げるなら説明責任について書かれている35章「原因は思考」と、36章の「遠慮なく話す」ですかね。遠慮はチームワークを阻害する害悪で、チームメンバーには「遠慮するのがあなたの仕事ですか?」みたいなことをうっかり言ったりしてました。そのまま言うとどう考えてもパワハラなので、いい方はもう少し考えたほうがいい。ってところで35,36章は読もう。

さー読むぞー

この手の本は前から順番に読むのもいいのだけど、つまみ食いして飛び回る(どうせ各章から他の章への言及があるんでしょ?)のも一つの読み方だと思います。ってことで気になる所をピックアップしてみたけど、どうも半分くらい挙がってますね……。これは上で挙げたのを読み終わったら結局全部読み終えてたりするよーな。まあいいか。

てことでぼちぼち読んでいきます。