はじめましてエンジニアの鹿又です。
弊社はペット関連事業のため、まずはペットの紹介から!……といきたいところですが、我が家ではペットを飼っていないため、私の好きな犬種の【パグ】について紹介したいと思います。
昔は、マルチーズやチワワなどいわゆる “かわいい系” の犬種が好きでしたが、身内が飼っているパグに出会ってから、パグやフレンチブルドッグなどの “鼻ペチャ系” の犬種に惹かれました。
魅力はやはり「愛らしい顔」「陽気で穏やかな性格」「愛嬌の良さ」ですね。ずっと見つめていると首をかしげるパグ特有の仕草はもうたまりません!!
このパグをよく散歩に連れて行くのですが、子どもたちに「あ、ブルドッグ! ブルドッグ!」と勘違いされるところもとても微笑ましい(^ω^)
さて、そろそろ本題に入りますね。
最近読んだ本でエンジニアの皆さんに是非お勧めしたい本に出会ったのでちょこっと紹介したいと思います。
【達人プログラマー ~職人から名匠への道~】です。
弊社では図書館のようなシステムがあり、会社で購入した本を自由に借りて学習することができます。
そこで見つけた本がこの本です!
タイトルを見たときは、「タイトルに重圧感があって難しそうだなー」と感じましたが、たくさんの技術者がお勧めしている名著なので手に取ってみました。
◆本の概要
この本は、1999年に出版された本の新装版で、オーム社が内容を改定して再出版しました。
当時の技術を例に書いた原著を、現在の最新の技術を例に書き換えてより正確で分かりやすく改定されています。
70個の重要点を、例を用いて起こりうる問題点を明確化し、良いプログラミングの方法を教えています。
まずは参考までにこの本で【常人と達人の違い】を紹介しています。
常人と達人プログラマーとの違いは何でしょうか? それは、問題に対するアプローチとその解決手段についての考え方、スタイル、哲学であると言っていいでしょう。達人プログラマーは、眼前の問題を考えるだけでなく、常にその問題をより大きな背景の中で捉え、常により大きな問題を見つけ出そうとするのです。要するに、大きな背景を捉えることなしに、達人たり得る方法はありませんし、知的な解決、見識のある決定を行う方法もあり得ないのです。
◆読書メモ
特に印象に残ったトピックをいくつか抜粋してみました。
第1章 達人の哲学
・割れた窓
割れても長期間修理されない窓が1枚でもあると、そのビルの住人に投げやりな感覚が生まれ、次の窓が割れたり落書きをされたりしてもビルに気をかけなくなり、深刻な破壊が起こりうるという「割れ窓理論」をこの本で学びました。大都市の市警は、「この割れ窓理論」を受けて、大規模な破壊につながらないように、小さな器物損壊を取り締まるようにしたそうです。
「割れた窓」(プログラミングの世界だと悪い設計、間違った意思決定、質の悪いコード)をそのままにせずに、発見と同時にすべて修復してダメージが広がるのを防いでいきます。この理論をチーム内で共有していれば、キレイなソースコードで楽しいプログラミング生活を送れますね!笑
第3章 基本的なツール
この「デバッグ」が一番面白い節でした。
・デバッグの心構え
まず、【パニックに陥らないこと】だそうです。
確かに納期直前や大規模な影響を及ぼすバグを見つけた際、パニックに陥った経験がある方も多いはず。私も何度もあります(^^;)
「そんなことが起こるはずがない!」という考えを、一刻も早く「実際に起こったのだ!」という一連の考えに辿り着き、問題の外見だけに目を向けず常に問題の原因の根を見つける努力が必要だと感じました。
◆感想
この本はプログラミングやアルゴリズムのテクニックというより、開発作業の円滑化や生産的に行うたくさんのノウハウを哲学的に説明し、良いプログラマーを目指すにはどうすべきかといったことや、コーディングの指針など、非常に基本的かつ重要な内容が詰め込まれています。そして、各章の説明に合うような偉人の名言・格言を紹介しているので、そちらも同時に学ぶことができます。
プログラミングする上でごくごく当たり前の事柄が記載してあるのですが、意外に実践できていない項目もいくつもあったため、何度も読み直しして習慣づける必要があると感じました。
感心した点は、訳注がとても親切で、偉人の一人一人について経歴を簡単に紹介してくれることです。Perlのプログラム記述の説明の注釈では
スヌーピーは、時折Perlの正規表現かと見間違えるような叫び声(記号の羅列)を発しています
と小ネタも含まれています!笑
また、「抽象概念はコード上に、詳細はメタデータ上に書くこと」など、基本から示唆に富むヒントまで、色々なレベルの方に合った内容になっています。
一度読んだだけで全ての内容を理解することは少々厳しく、何度か読み直し、実践・反省し、この本の内容が理解できれば文字通り「達人プログラマー」と呼ばれるようになれるのかなと思いました。
また、紹介したい本が見つかりましたらお知らせします!
今回はこの辺で(^^)