サービス開発をするソフトウェアエンジニアを想定しています。★は読み切る難易度であり、ほぼイコールでおすすめ度。
イシューからはじめよ - ★☆☆
仕事…というか問題を解決するやり方的な本。一回さらっと読んでおいて、働きだしてしばらく立ってからもう一回読むくらいが良い読み方な気がする。
キーワード:仕事,プロジェクトマネジメント
人月の神話 - ★☆☆
コーディングや個別の技術から離れて、ソフトウェアエンジニアリングというものの難しさを明らかにした本。出てくる事例はIBM360とかめちゃくちゃ古いが、内容は今でも普通に通用するのに驚く。以下は、特に有名な「銀の弾丸などない」の一節。
すべてのソフトウェア構築には、本質的作業として抽象的なソフトウェア実体を構成する複雑な概念構造体を作り上げること、および、偶有的作業としてそうした抽象的実在をプログラミング言語で表現し、それをメモリスペースとスピードの制約内で機械言語に写像することが含まれている。
- 銀の弾などない— ソフトウェアエンジニアリングの本質と偶有的事項
キーワード:ソフトウェアエンジニアリング,設計,プロジェクトマネジメント
ノンデザイナーズ・デザインブック - ★☆☆
近接・コントラストなど視覚的なデザインの基本要素が具体例とともに説明される。読みやすくコスパ高い系。
キーワード:グラフィックデザイン,ユーザーインターフェース
誰のためのデザイン? ―認知科学者のデザイン原論 - ★★☆
これもまあ古典。「使いやすい道具」とはなにか?ということを、認知的な観点から説明している。ちなみに、もう少し話を広げると、融けるデザイン ハード×ソフト×ネット時代の新たな設計論とかもおすすめ。
キーワード:プロダクトデザイン,ユーザーインターフェース,認知心理学
(自然)言語という、人間にとって最も身近な記号のシステムの構造を解き明かした人文学の古典。 ソフトウェアは記号のシステムであり、iOS のようなプラットフォームに構築されたユーザーインターフェースの体系もまた記号のシステムである。だから、言語というものがどういう構造と特性を持っているかを理解することは、実はものすごく汎用性がある。これを読むと、ドメイン設計においてなぜ言葉が重要になるか、というようなことが自然に理解できるようになる。また、システムを考える際にここで用いられる、通時的・共時的といった枠組みも結構ソフトウェアエンジニアにとって有用だと思う。
キーワード: 言語,記号,抽象化,システム
コンピュータプログラミングの概念・技法・モデル - ★★★
一見、技術書のように見えるけど、この本はプログラミングというものを科学的に取り扱っているという点で純粋な技術書ではない。この本を読めば、一般的にプログラミング―コーディングからアーキテクチャまで―と言われる行為のうち、高度なアルゴリズムとデータ構造以外はだいたいカバーできるくらい幅広く本質的な事項を扱っている。それなりに量があって読むのは大変だけど、その分の価値は十分にあるような本。
最近この本を読む読書会をやっている。
コンピュータプログラミングの概念・技法・モデル を読む会 #1 - Wantedly, Inc.のエンジニアのミートアップ - Wantedly
キーワード:プログラミング,設計,抽象化,システム,アーキテクチャ