まりぴよこのブログ

日々の日記。技術ネタでまとまりきってないものの記録、伝わる文章の書き方を練習とか。

Clean Coder

プログラマとして一生生きていくための必携本

初めて読んだのは2年以上前だけど、今回ブログに本のことを書こうと思って、最初に書きたいのはコレだ!と思った本。

プロとして生きるための大切なことがここに全て書いてあると思う。プログラマを一生の仕事として選ぶつもりのある後輩に出会ったら、是非薦めたい本です。

・・改めてパラパラと見直すつもりが、半分くらいまで一気に読み返してしまった。

たいせつなこと

最初に読んだときに印象深くて今でもちゃんと覚えてた箇所を幾つか紹介。

構造に危害を加えてはならない
  • ソフトウェアは適切なコストで変更できなければいけない
  • ソフトウェアを柔軟にするには、いつも柔らかくしておく
  • 小さな変更を必要なときにいつでも加える
  • 変更を加えるのが怖いのは、壊れるのが怖いから
  • 壊れてもわからないのはテストが無いから
  • コードをほぼ100%カバーするテストがあれば、コードを変更するのは怖くない

→ 全てはテストに通じる

労働倫理
  • 自分のキャリアへの責任は自分にある
  • 40時間を雇用主の問題に、20時間を自分のキャリアのために使う
  • プロは自分の専門知識の手入れに時間をかけるものだ
  • 20時間でソフトウェアにかけていた情熱を取り戻し、楽しむ
継続的学習
練習
  • 日々の仕事は本番であり、練習する場ではない
  • 練習の目的は、仕事では使わないスキルの強化・改良
雇用主や顧客に対して親身になる
  • 雇用主の問題は自分の問題
  • 問題を理解して最前の解決策を見いださなければならない
  • システムを作るときには、雇用主の立場になって、開発する機能が雇用主の要望にかなっているかを確認しなければならない
「ノー」と言う
  • 本当のチームプレイヤーとは何か
  • 「試しにやってみる」と答えることの罪

もし力を温存していないのなら、もし新しい計画が無いのであれば、もし振る舞いを変えないのであれば、もし最初の見積もりに自信があるのであれば、試しにやってみると約束するのは不誠実である。嘘をついているのと同じだ。

コーディングの準備
  • 疲労時は注意散漫のときには、コードを書いてはいけない。やり直しになるだけだ。
  • 睡眠・健康・生活様式を調整して、1日に8時間は満足のいく時間を作らなければならない
ウソの伝達
  • 自分勝手に「完了」の定義を作り、十分にやったと勝手に納得して、次の作業に移ろうとする
  • 残った作業は時間のある時に対応すれば良いと、自分勝手に正当化する
  • この行為は伝染する
  • 誰かが「完了」の定義を拡大すると、他のみんなも新しい定義を採用する
  • 「ウソの伝達」を避けるには、「完了」を定義すること
  • 最善の方法は、自動受け入れテスト

→テストテストテスト!!

手伝ってもらう
  • 簡単に手伝ってもらえるのに1人で行き詰まっているというのはプロではない
  • 適切なタイミングで手伝いを求めるのは、職業倫理の問題だ

 一気に読み返したところまで、箇条書きで書いてみたけど、それぞれを説明するエピソードと、ボブおじさんの語りかけがとてもすばらしい。

他にも実際にどんな「練習」をしたら良いのか、そんなに大事大事といわれる「テスト」ってどうしたらいいのか、本を読むとすぐにやってみたくなるはず。

実物を読んでないプログラマがもし居たら、是非手に取ってみてもらいたい。

これからのプログラマ人生が大きく変わります。

「たいせつなことは目に見えないんだ」(星の王子さま)