The Pragmatic Programmers シリーズの本です。ソフトウェア開発の日々の進め方の具体的なアドバイスが満載です。『達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化』で説明されている達人プログラマーの偉大な習慣を、具体的にどう実践するかについて書かれています。
今日からでも実践できる内容にまで落とされているので、読んですぐに理解できるし、わかりやすいです。今までもこういう本を読んできたけどうまく実践できなかったという人にお勧めです。
本書は、すばらしいプロジェクトにするための、「インフラストラクチャ」、「テクニック」、「プロセス」 について書かれています。インフラストラクチャでは、チームが仕事をより楽に進めるための各種ツールを、テクニックでは、苦労してではなく賢く仕事を進めるために毎日使える習慣を、プロセスでは、曳光弾(えいこうだん)開発とよばれる開発プロセスの方法論を紹介しています。
この本は、偉大な習慣を学ぶ本です。
「僕は、偉大なプログラマなんかじゃない。偉大な習慣を身につけたプログラマなんだ。」Kent Beck
覚書
すばらしいプロジェクトを作るために
インフラストラクチャ
チーム全員の仕事をより楽に進めるための各種ソフトウェア。
- バージョン管理
- ビルドスクリプト
- 継続的なビルド
- 問題の追跡
- 機能の追跡
- テストの自動実行
テクニック
苦労してではなく賢く仕事を進めるために毎日使える手法。
- 技術主任
- リスト
- コードレビュー
- コード変更の通知
- ミーティング
プロセス
曳光弾(えいこうだん)開発。
- システムオブジェクトの提案
- インターフェースの提案
- インターフェースを接続
- 機能の追加
- リファクタリング
インフラストラクチャ
サンドボックス開発
他の開発者の影響を受けないような環境を構築して開発を行う。
SCM には製品のビルドに必要なものすべてをいれる
サードパティライブラリ、ビルドスクリプト、ソースコード、マニュアルなど、製品のビルドに必要なものはすべて SCM (Source Configuration Management:ソースコード管理)に保存しておく。
例外は、自分で作り出せるファイル(中間コードやコンパイル後のコード)だけ。
最初にビルドスクリプトを作る
IDE 以外でビルドができるように、ビルドスクリプトを最初に作成する。そして、ソースコードに変更があるたびにビルドスクリプトを実行するようにする。
問題の追跡
次のような項目を問題追跡のために記録する。
- 製品のバージョン
- 誰が遭遇したか
- 深刻度
- 再現性
- 環境(OS、DBなどのバージョン)
- 修正バージョン
- 修正担当者
- 修正の確認者
テクニック
作業リストに基づいた作業
作業リスト(TODOリスト)を作成し、それにしたがって作業を行っていく。作業リスト駆動の仕事の進め方は、『エンジニアのための時間管理術(オライリー)』 がお奨めです。
すべてのソースコードをレビューする
レビュー目的のためのペアプログラミング。技術主任(アーキテクト)を専任でアサインし、その人にすべてのソースコードをみてもらう。レビューは細かく多く。大きく少なくだと、技術主任がつらい。
ゴム製のアヒルちゃん(『達人プログラマー』より)を用意するのもよい。何か問題があれば、まずはアヒルちゃんに聞いてもらう。人に話すとほとんどの問題は自分で答えがだせる。
参考
- 時間管理術(TODOリストの活用)
- 達人プログラマを読んでない人は、すぐによむべし!
- SCM には Subversion がおすすめです。
- 達人プログラマとして持つべき思想
- ハッカーとして持つべき思想