これくらいの時期に毎年聞かれるので、まとめてみようと思います。
- リーダブルコード
- リファクタリング
- チーム開発実践入門
- ライト、ついてますか
- 考える技術・書く技術
リーダブルコード
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
様々な言語を使いながら「読みやすいコードとは」を解説しています。 様々な言語を使いながら、というのがポイントで「特定の言語に限らない綺麗なコード」のパターンが分かります。
また、フォーマット、コメントなど、ある意味で本質的ではない部分についても解説されているため、 「成果物としてのコード」がどのように有るべきか、を学ぶことが出来ます。
リファクタリング
「悪いコード」をどのように「良いコード」にするか(=リファクタリングするか)を解説しています。
アンチパターン(不吉な匂い)に、「属性の横恋慕」「疑わしき一般化」などの名前をつけて解説しているのが良いところで、 現場でコードについて議論する際のキーワードを学ぶことが出来ます。
また、どのようなステップでリファクタリングを進めていくか、についても詳しく書かれており、 単体テストの書き方やデザインパターンなど、実際の業務に役立つ考え方を知ることが出来ます。
チーム開発実践入門
書いたコードを実際のプロダクトとして仕上げるためのバージョン管理、CI/CD、プロビジョニングなどについて解説しています。
個々の要素技術やツールだけでなく、「これをしないと何が問題なのか」という部分を詳しく解説しています。 ツール自体は時間とともに時代遅れになりますが、「なんで Git を使うのか」「なんで Jenkins を使うのか」などの モチベーションは普遍的なものなので、新人のうちに学ぶべきです。
個人的に、業務経験のない新人がつまずくのは、こういった部分の方が多いと感じています。 自分が新人を持ったときに、まず一緒に読む本です。
ライト、ついてますか
この本は問題発見についての本である。問題は解くより発見する方がずっとむずかしく、ずっと面白い。―実人生で本当にものをいうのはそこなのだ。
問題解決というよりも問題発見のテクニックや考え方を解説した本です。 どちらかというとコンサルタント向けの「最初の一冊」かもしれませんが、エンジニアも読むべき一冊だと思います。
「エンジニアの仕事はプログラミングではなく問題解決だ」というのは基本的な考え方だと思いますが、解決する問題を間違えないようにすることも大事です。 振られたタスクの目的を考え、「解決すべき問題」に注力することで高い効率でチームに貢献出来ます。
エンジニアに限らず、社会人としての基本になる一冊です。
考える技術・書く技術
ドキュメンテーションやレポーティングの基本的な考え方を学ぶことを解説している本です。 こちらもコンサルタント向けの「最初の一冊」に近いものかもしれません。
エンジニアとはいえ、仕事の基本として報連相やコミュニケーション能力は重要です。 状況によってはドキュメンテーションがメインのタスクとなることも多いと思います。
ドキュメンテーションの基本を学ぶことは様々なシーンで役に立つので、読んでおいて欲しい一冊です。
他には?
挙げはじめたらキリがないのですが、ほぼ間違いなく役に立つ「とりあえず」は以上の5冊かと思います。
- 具体的なプログラミング言語や文法については業務の中でキャッチアップする方が効率的なので、必要になったら。
- 設計理論、プロジェクト管理、チームビルディングなどは、興味を持ったら。
- 自己学習の進め方や、キャリア論などは迷いましたが、まずは目の前のタスクをこなすほうが大事かなと思います。