📖

あなたのエンジニア人生を変えるかもしれない技術書

に公開

こんにちは、PortalKeyの植森です。
今日は自分のおすすめの技術書を紹介したいと思います。
めっちゃ強いタイトルがついてますが、これは僕が以前先輩に言われた言葉がもとになっています。

面接についての話題の時に、その先輩は面接でよく聞いていることがあったそうです。
それが「あなたのエンジニア人生を変えた技術書はなんですか?」とのことでした。

この質問は今改めて考えるととても的確な質問だと感じます。
エンジニアとしての考え方に影響を与えるぐらい印象に残っている技術書とその理由から、その人がエンジニアとしての価値観や大事にしていること、強く関心があることを聞くことが出来ます。

今回は、自分のエンジニアとしての考え方や価値観を支える本たちを紹介したいと思います。
もしかしたらあなたのエンジニア人生も変えてくれるかもしれません。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

複数のプログラマが関わる場合、優れたコードを書くだけではプロジェクトは成功しません。
全員が最終目標に向かって協力することが重要であり、チームの協力関係はプロジェクト成功のカギとなります。
本書は、Subversionをはじめ、たくさんのフリーソフトウェア開発に関わり、その後Googleでプログラマを経てリーダーを務めるようになった著者が、「エンジニアが他人とうまくやる」コツを紹介。
「チームを作る三本柱」や「チーム文化のつくり方」から「有害な人への対処法」まで、エンジニアに求められる社会性について楽しい逸話とともに解説します。

この本は自分のエンジニアとしての価値観に特に強く影響を与えている本です。

ソフトウェア開発を始めるとき、よく必要な技術やアーキテクチャに着目されがちです。
しかしソフトウェアを作るのには技術的要因と同じぐらい、あるいはそれ以上に人と組織が大事ということを知ることが出来る本です。

本書の特徴としてはそんな組織論について小難しい話が書いてある本が多い中、個人の生産性や幸福に直接影響するということにフォーカスしていることです。
この本ではチームを通じて自分のエンジニア人生としての幸福を高めるためのヒントを学ぶことが出来ます。

また、それらはエンジニアのキャリアを築くうえでどう振舞うべきか、どういったチームで働くべきかを教えてくれるでしょう。

優れたソフトウェアを書きたい? 本書は君のための本だ

もしあなたの会社の人事がエンジニアってどんな人種なのかわからないと困っているならこの本を読んでもらいましょう。
エンジニアという気難しく変わった人種について、少しは理解してもらえるはずです。

以下は本書に書いてある僕の好きな言葉です。

  • ソフトウェアは簡単。人は難しい
  • チームの文化はサワードウパンのようなものだ。スターターが強ければ、新来者が持っている望ましくない菌(文化)に耐えられる。スターターが弱ければ、新来者が持ち込む道の菌(文化)に耐えられない。
  • チームがすべて。ビジョンを共有しよう。仕事を分担しよう。他人から学ぼう。素晴らしいチームを作ろう。
  • 自分の価値を自分の書いたコードと結び付けてはいけない。

アジャイルサムライ――達人開発者への道

マスターセンセイと学ぶアジャイル開発の道動くソフトウェアを素早く開発するための「アジャイルソフトウェア開発手法」を、実際に導入するにはどうすればよいかを、豊富な図を使い親しみやすい言葉で解説しています。経験豊かな著者が具体的なノウハウをまとめた本書は、アジャイル開発を導入したいと考えている組織や人のための「現場のマニュアル」として役立ってくれることでしょう。

この本は僕が今更紹介する意味があるのかというぐらい有名な本ですが、改めて。

本書は僕の人生に最も影響を与えた本かもしれません。
学生の時にこの本を読み「動くソフトウェアを素早く届けることを大事している場所で働きたい」と強い気持ちを持つようになり、就職活動に大きな影響を与えたのは間違いありません。
(ちなみに就職担当の先生からは「SIerの説明会にも行け」とよく言われてましたが断固拒否していました)

アジャイルというのは方法論ではなくエンジニアとしての姿勢や取り組み方、あるいは生き様であると僕は考えています。
Agile(迅速に)に開発するために必要なのはより良い方法を考えること、開発の足かせになっている障害が何かを特定し取り除くこと、優れたチームを作ることだけです。

万人の認める唯一無二なる究極のアイスクリームのフレーバーが存在しないように、万人が従う唯一無二なる究極のアジャイル手法のフレーバーも存在しない。
どんな書籍も手法も、君が必要とするありとあらゆるものを用意することなんてできない。だから、自分の頭で考えるのをやめちゃだめだ。

アーキテクチャや技術・方法論は時代に合わせて変わりますが、物事への考え方というのは価値が変わることがありません。
本書は先人のプラクティスを通じて、ソフトウェア開発に対する重要な考え方を学ぶことが出来ます。

ついでに僕の大好きなアジャイルソフトウェア開発宣言のリンクも張っておきます。

https://agilemanifesto.org/iso/ja/manifesto.html

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を

ノンデザイナーズ・デザインブック

デザイナーでない人のための、デザインの定番基本書。
デザインの「4つの基本原則」。
これを知るだけで、あなたのデザインはずっとぐっと、良くなります。
プロではなくても、読みやすいデザイン、伝わるプレゼン資料、わかりやすいレイアウトを作りたい。
そんなあなたのための、デザインの基本書です。

僕は専門学校ではWeb学科専攻で、プログラミングだけではなくWeb開発の現場で必要な技術についての授業もあり、その中の一つにWebデザインの授業がありました。
Photoshopでカンプを作りIllustratorでアイコンを作ってHTMLとCSSを書いてサイトデザインをするみたいな授業です。

そんなWebデザインの授業で先生に言われた言葉があります。
「植森……お前センスねぇな!」
先生とは仲が良くカラッとした人だったのもあって僕も「ですよねー」みたいな感じで返してたんですが、そんな先生が教えてくれたことの一つが 「デザインの基本にセンスは不要」 ということです。

本書はタイトル通り、デザイナーではない人向けのデザインの本です。
この本ではデザインを良くするための4つの基本原則である「近接」「整列」「反復」「コントラスト(強弱)」について紹介されています。

この4つの基本原則はあらゆる場所で威力を発揮します。
例えばWebデザインやUIデザインであったり、プレゼン用の資料や発表用のスライド、恐らくこうしたブログ記事にも影響しているでしょう。

デザインが苦手だ、と思っているエンジニアは結構多いと思います。
また「UIがイケてないと感じるけど言語化が出来ない」「なんか見た目気持ち悪いけど何が悪いかわからない」、あるいは「情報をうまくまとめられない」みたいなことは多いんじゃないでしょうか?

例えば人に感動を与えるようなデザインや、スマートで印象に残るデザインにはセンスが必要かもしれません。
しかし、レイアウトの違和感を言語化することや基本的な見やすいレイアウトを考えることは知識で解決することが出来ます。

本書はそういったデザインの基本知識を身に着けることができ、あなたのデザインに対する考え方を変えることが出来るかもしれません。
あらゆるビジネスシーンで役に立つ、エンジニアだけでなく全人類必読と言える一冊です。

ちなみにデザインに興味を持ったら以下の本もおすすめです。

インターフェースデザインの心理学

プログラマが知るべき97のこと

人々のさまざまな思いを技術で形にするプログラマ。本書は世界中で活躍するプログラマによる97本のエッセイを収録した書籍です。
プログラミングにおいてもっとも重要な事柄は何か、バージョン管理やテスティング、設計原則とコーディングテクニック、
また腕を磨くための勉強法などについて、経験豊かなプログラマが自らの体験を踏まえて解説します。
プログラマを勇気づけ、新たな気づきをもたらす一冊です

本書はWebでも無料で公開されています。

https://プログラマが知るべき97のこと.com/

この本は様々なプログラマが書いたエッセイを収録した本です。
日本語版では10本の書下ろしが追加されて107になっています。

ここまで3つの本を紹介してきましたが、この3つにはいずれも共通点があります。
それは「考え方を学べる本」であるという点です。

エンジニアという業界に興味を持っている人や初学者の人と接する機会がちらほらありますが、僕が必ず言うことがあります。
それは「まずはエンジニアとしての振る舞いを学んだ方がいい」ということです。

本書は様々なエンジニアの考えを学ぶことが出来る本です。
技術的な観点の話もあれば、エンジニアとしての生き方の話もあります。
それらの考え方はきっと、自分なりのエンジニアとしての振る舞いを身に着けるヒントとなるでしょう。

最後に僕の好きなエピソードをいくつかピックアップしておきます。

  • 美はシンプルさに宿る -「文章にしろ、和音にしろ、リズムにしろ、美しく、優雅なもの優れたものはすべて、シンプルである」
  • 言語だけではなく文化も学ぶ -「新しい言語から新たな発想を得て、同じ問題に対して違った解決策を見つけられるようになることが大事なのです。」
  • 真実を語るはコードのみ -「コードを書くことは、詩やエッセイ、不特定多数の人に見せるブログ、あるいは大切な要件を伝えるメールなどを書くのと同じようなものと考えるべきです。」
  • コードを読む -「プログラミングの技術を本気で、磨きたいと,思っているのなら、本を読むのもいいですが、一番いいのは、他人が書いたものでも自分の書いたものでも、とにかくコードを読むことです」
  • UNIXツールを友にする -「もし無人島にIDEかUNIXツールのどちらかしか持って行けないとしたら、私は迷うことなくUNIXツールを選びます」
  • 顧客の言葉はそのまま受け取らない -「その答えは実に簡単です。顧客との関わりを密にすることです。」
  • 良いプログラマになるには -「自ら誇りに思えるプログラムを書きましょう。」
  • 名前重要 -「ふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていないということなのではないでしょうか」

まとめ

今回は自分のエンジニア人生を変えたかもしれない技術書について紹介しました。
人生を変えることは約束できませんが、どの本も面白い内容であることは約束できます。
興味があれば是非読んでみてください。

また、もしよければあなたのエンジニア人生を変えた技術書についてもコメントしてくれれば嬉しいです。
それでは。

PortalKey Tech Blog

Discussion