匠の相駕籠

ソフトウェア開発会社の日常とオピニオン - メメントモリ公式ブログ

本をただ読んでいるだけなのか、理解して読んでいるかの違い

最近、また『Joel on Software』という書籍を読み直した。

著者は Joel Spolsky(ジョエル・スポルスキ)という人で、元 Microsoft で Excel のプログラムマネージャ。Fog Creek Software を立ち上げ、Trello、Stack Overflow など数々のサービスを生み出す土壌を作ってきた人だ。

 

『Joel on Software』は、日本で翻訳出版されたのが 2005年。その頃はまだ、Trello も Stack Overflow もなかった。

私は、未だにこの本は、ソフトウェア開発者が身につけておくべき教養が一通り詰まっている、恐るべき書だと思っている。出版が古いため、いまでは書店であまり見かけることがなくなってきたが、ソフトウェアの開発を始めようと考えている人には、絶対に最初に勧めたい本だ。

 

実は、今回話題にしたいのは、この本の内容についてではない。

私がこの本から学んだ、最大のことを話したいと思う。

 

私が『Joel on Software』に最初に出会ったのは、ゲーム会社のプログラマーとして新卒で働きはじめた頃だと思う。

有名なものだが、「ジョエルテスト」というのがあって、自分の関わっているソフトウェア開発が健全な状態かを調べるための、簡単なチェックリストだ。以下に、転載させていただく。

1.ソースをバージョン管理しているか?

2.1ステップでビルドができるか?

3.デイリービルドをしているか?

4.バグデータベースを使っているか?

5.新しいコードを書く前に、既存のバグを修正しているか?

6.更新されているスケジュールがあるか?

7.アップデートされている仕様書があるか?

8.プログラマは静かな労働環境にあるか?

9.プログラマは最高のツールを使っているか?

10.テスターがいるか?

11. プログラマを採用する時にコードを書かせているか?

12.ユーザビリティーテストを行っているか?

全12項目。書籍の中では、これらのそれぞれの項目が、なぜ健全なソフトウェア開発に必要不可欠かを、Joel 氏の経験から、論理的に説明している。

 

このチェックリストが10点以上であれば、そのソフトウェア開発チームは健全であるが、それ以下は深刻な問題を抱えている。しかし、実のところ世界中の殆どのソフトウェア開発は2〜3点しか満たしていない状態で運用されている。

 

この他にも、たくさんの面白いトピックがあり、当時の私は夢中で読んでいた。

 

 

数年を経て、いくつかのプロジェクトに関わったあとで、私はゲーム会社を辞めた。

その時、久しぶりにまたこの本を読み返した。

 

私はびっくりした。

むかし読んだときに、あれだけ夢中になって読んで、しっかり体得していたと考えていたのに、いくらかの経験を経て『Joel on Software』を読み直すと、まったく異なる読み物のように思えた。

 

私は、経験することによって、その本の中に書かれてあることが、より深い意味で捉えられるようになったのだ。最初に読んだときには、読み取れなかった意図が、自分が成長(?)したことで、新たに理解できるようになったのだ。

 

それまで、私は同じ本を繰り返し読むという習慣を持たなかった。

 

私は、そのとき25歳くらいだったと思うが、初めて「本を読んでいても、ただ読んでるだけなのか、理解をして読んでいるかの違いがある」ということを知った。

 

最初に『Joel on Software』を読んだときは、ただ面白いアイデアに夢中になっていただけで、私は、ただそれを読んでいただけだったのだ。ちゃんと理解していなかった。

次に読んだときは、私はようやくこの本に書かれていることの意味を理解するようになった。

 

人は、同じことを経験したり、同じ本を読んだりしても、感じ方が変わってしまう瞬間があると思う。その一つは、その人自身の成長が影響すると思う。

 

理解できなかったことにしつこく取り組んでいると、ある日、何もなかったかのように目の前の壁が取り払われる瞬間がある。この時、私は自分が成長したんだなと感じる。

 

成長を続けると、自分が今までわからなかったことを、知ることが出来るようになる。

理解できなかった、あの人の会話が、すこし自分のことのように感じられるようになる。

 

私は、これをずっと続けていきたいと願っている。