この記事を読もうと思ったということは，あなたはそこそこできるプログラマ，あるいは社内でも自他ともに優秀と認められるほどの実力者かもしれません．

ただし，そんな状況でも業界で名が知られる優秀な人や社内の上級プログラマと対峙した時身構えてしまい相手の不思議な理論に屈服してしまう経験はありませんか？本気でプログラミングをすれば互角，あるいは言語によっては自分の方が明らかに上だと自負できる状況にもかかわらず．

そんな中，そこまで優秀そうに見えないのにうまくマウンティングを回避しているプレーヤーを見たことはないでしょうか？

彼らと自分は何が違うのか？

簡単に言えば，知ってるコンピュータ科学の量と，何らかの物事に対して同調するのではなく先駆者的にそれを宣言することです．それを少しでも発揮できる名著をこれからご紹介します．

※安心してください，日本語の書籍だけ紹介します．

Coders at Work プログラミングの技をめぐる探求

最初はやはりこの本でしょう．

あなたは，ドナルド・クヌースというプログラマを知っていますか？スタンフォード大の名誉教授でThe Art of Computer Programmingの著者です．この書籍はけっこう有名なので大学の研究室に置いてあった，という方もいるかもしれません．ただ，この書籍を読むというのは非常にハードルが高いので基本的にやめたほうが良いでしょう．しかし，この本では彼のインタビューを読むことができます．それだけでも価値があるのではないでしょうか？

それだけでなく，何よりこの本は世界でも偉大なプログラマに対してのインタビュー集になっており，この本の内容は一通り知っておいても損はありません．

内容は，彼らがどうやってプログラミングを学習していったのか，またどうやって設計するのか？その将来性は？などの内容が含まれております．当然，彼らも一人の人間ですのでこの体験が100％当てはまるということではありませんが，プログラマとしての戦闘力を高めることができます．

新装版 達人プログラマー 職人から名匠への道

1年半前でしょうか，新装版になってされた発売されたプログラマの名著です．

個人的には，ここに書かれている内容は自分の経験と照らし合わせて理解すべきだと思っています．それぐらい重要な常識が綴られています．

プログラマであれば，この本を読んでいなければマウンティング取られてもおかしくありません．読了し，内容を自分の経験と絡めて議論できるレベルになっていることが求められてきます．

注意点としてはこの本の読み方です．書かれた時代が古くなってきているので技術的な真新しさについては鵜呑みにしなくても良いです．古いやり方，例えばツールなど，もあるのでそういった部分は歴史でも読むように流しましょう．プログラマの心構えや作法のような概念を吸収するような形で読み込んでいくことが望ましいでしょう．

個人的に好きな箇所は，毎年新しい言語を最低1つは習得する項目です．我々プログラマにとって技術，特にプログラミング言語については最も強い武器となります．現在では，JavaやC，Ruby，PHP，Python，JavaScriptのようなメジャーな言語は引き続き習得していくことになると思いますが，それ以外でサブと呼べるかわかりませんが，自分の興味や好奇心に合致するものを，そうですね，まずは「Hello, World」からやってみるのが良いでしょう．

世界でもっとも強力な9のアルゴリズム

ソフトウェアエンジニアにとって，アルゴリズムというテーマに着目するとどうしても数式がたくさん出てきて，抵抗がある方も多いと思います．しかし，この本はアルゴリズムを簡単に噛み砕いて，ほとんど数式を読むといったこともなく説明してくれています．

具体的な内容は，検索エンジンのインデクシング，ページランク，公開鍵暗号法，誤り訂正符号，パターン認識，データ圧縮，データベース，デジタル署名，決定不可能性の9種類．驚いたことにアルゴリズムといえば，バブルソートが効率悪くてクイックソートが最高速といったことが綴られるのかと思いきやそういうものはなかった．まあアルゴリズムと呼べるのかわからないものもあるが，ここからさらに上位の専門書を読むためのステップとしてもありだと思われる．

最近AI分野が人気で，パターン認識は話題に上がる事が多いので知っておいたほうがいいでしょうし，9つについて全体的に知っていればだいぶ戦闘力は担保できると思います．

お名前.com

エリック・エヴァンスのドメイン駆動設計

実践ドメイン駆動設計

マウンティングといえば，この2つの本なくしては語れないでしょう．僕の会ってきた方は，けっこうこの本を元に話を展開してくる人が多いです．

ちなみに，僕は新人の時DDDがわからなくてDDDのプログラムを読むのに大変苦労しましたが，この本に出会ってからそういったことはなくなりました．ただ，現場でガチのDDDを実践しているところは相当レベル高いです．しっかりDDDやってる現場は，僕も片手で数えるぐらいしか関わったことがないです．つまり，この書籍を読んだからと言って現場ですぐに役立つわけではないですが，先も述べたようにこの内容を踏まえて話をする方がいるため知らないと困ります．

分厚いですが，是非読了し何度も読み込むことをおすすめします．これを読んだ後自分でDDDをテスト的に書いてみて理解すると更に良いでしょう．理解するときのファーストステップは，Spring Bootです．Spring Bootは現場でも利用している方が多いとは思いますが，DDDを意識して作られているので勉強になりますので，一から細かく理解されるとより深まるでしょう．Javaで書きたくないという方がいましたら，GroovyでもKotlinでも書けますのでそのあたりは心配しなくても大丈夫です．

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向設計で，再利用が可能なデザインパターンについて書かれています．ただし，最近の設計では対応できない新しい概念も存在しているためこのパターンを覚えたから全て完璧というわけにはいかないです．とはいえこの書籍に書かれたデザインパターンは全て把握しておかないと既存のコードを読むのも辛い場面に出くわすと思われます．

多分デザインパターンを知らなくてもAbstract Factoryや，Singleton，Template Method，Builder，Adaptorなど簡単なものについては知らずのうちに読めますし，自力で書くこともできるでしょう．しかし，VisitorやObserver，State，Strategyなどはやや難解で，専門用語もでてくるので知らないと厳しいと思われます．

新装版 リファクタリング 既存のコードを安全に改善する

リファクタリングとは，プログラムで保守性が低かったり，理解に時間を要したり，バグが出やすいと考えられる場所を探して，動作を全く変えずに構造を変える作業になります．

そのテクニックを習得することは重要です．僕が知っているエンジニアの方で分かりづらい処理を宗教と言い放っていたことがありますが，それではプログラマとしてのスキルに疑問を持ってしまいます．本来，宗教と呼べるような箇所にプログラマはレビューで指摘をしないです，お遊びでコメントをすることはありますが．

Javaで書かれてはいますが，単純な処理が多いのでこの本は比較的読みやすいです．

リファクタリングは最近TDDでもよく言われるようになりました．RailsなどはTDDが前提のフレームワークになっていますので，馴染み深いでしょう．

Founders at Work 33のスタートアップストーリー

今まで紹介した書籍とはやや志向が違いますが，こちらの本では33人のシリコンバレーで起業した方のサクセスストーリーのお話がインタビュー形式で綴られます．

なぜ，この本を紹介したのかといいますとアメリカのスタートアップの有名企業の話を知り尽くしている方の言っていることが少しでも理解できると良いと思いました．大体は超有名な起業家の話か，最近のホットな起業家の話になります．ホットニュースは自分で拾えますが，昔の起業家となるとやはり書籍でインプットするのが効率的です．

まぁ斜めに構えるわけではないですがその中でも有名なことは知っておくにこしたことはないのかな，と思いこちらをご紹介します．

例えばどういう起業家かといいますと，Adobeのチャールズ・ゲシキ実業家，Gmailの考案者のポール・ブックハイト起業家，Apple共同設立者のスティーブ・ウォズニアック，PayPalの元CTOなどです．

こちらは，全てAmazonで紹介していますが IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』 で購入するものおすすめです．

お名前.com