5年間コードを書き続けたエンジニアが、新人に読んでもらいたい11冊+αを紹介する
新人エンジニアのうちに読んでおくと役立つ名著やおすすめの本を紹介。開発全般やコーディングなどの作法を学ぼう。
某社でサーバサイドエンジニアをしている @ikenyal と申します。開発言語は主にPHP。新卒入社から5年、エンジニアとして働いています。学生時代にもプログラミング、サーバ・ネットワーク構築や運用を経験しました。
これまで、社内外で新卒からベテランまで多くのエンジニアを見てきました。その中で、新人のうちに身につけておいた方が良いだろうと思うものは「お作法」と「基礎知識」です。
プログラミング言語やシステムの専門的な知識は後からでも勉強できます。一方で、さまざまな自己流の癖は時間が経つと身に染みついてしまい、指摘されても直すのが難しくなってしまいます。そのため、新人のときに良いお作法を勉強しておくことをおすすめします。あわせて、開発を行う際に関わる様々な基礎知識は知っていて損はありません。基礎知識を知っているからこそ、より良いシステムを提案・開発できるようになります。
今回紹介するお作法と基礎知識は以下の4点です。
- 開発全般のお作法
- コーディングのお作法
- インフラの基礎知識
- 最新技術の基礎知識
それぞれ、新人のうちに読んでおくと役立つ名著やおすすめの本を紹介します。
1. 開発全般のお作法を身につける3冊
チームで開発を行う際には、プログラミングができるだけでは不十分です。どのようなマインドセットでチーム開発を行っていけば良いのかを先人達の助言から学びましょう。
マインドセットは初期に身についたものが自身のベースになってしまうため、最初の段階からより良いマインドセットに触れておくことが重要。ソフトウェア開発の現場で気をつけること、プログラミングの原理原則なども知っておきましょう。
『達人プログラマー―システム開発の職人から名匠への道』(ピアソンエデュケーション)
▽ 達人プログラマー―システム開発の職人から名匠への道 | Amazon
エンジニアが開発を行う際のノウハウが詰まったオールインワンな一冊。要件定義から保守フェーズまでの開発の流れ、開発者としての哲学、開発スタイルなどがまとめられています。「DRY原則」(Don't repeat yourself. = 繰り返しを避けること)も、この本で語られて有名になりました。エンジニアが持つべき意識を学ぶために一読しておきましょう。
新装版が今秋オーム社から発売され、電子版にも対応しています。
▽ 新装版 達人プログラマー 職人から名匠への道 | Amazon
▽ 新装版 達人プログラマー 職人から名匠への道 | オーム社 eBook Store
『エクストリームプログラミング』(オーム社)
▽ エクストリームプログラミング | Amazon
▽ エクストリームプログラミング | オーム社 eBook Store
アジャイル開発の原点となったXP(エクストリームプログラミング)。プロジェクト成功のためには、技術力だけではなく人間関係も大切だと説いています。アジャイル開発は多くのチームで採用されているので、個人ではなくチームで開発をする際には是非とも読んでおきたい名著です。
『Clean Coder プロフェッショナルプログラマへの道』(アスキー・メディアワークス)
▽ Clean Coder プロフェッショナルプログラマへの道 | Amazon
▽ Clean Coder |アスキー・メディアワークス
プログラミング技術だけではなく、プログラマとして普段どのように仕事をすべきかが語られている1冊です。この本で語られているTipsを頭の片隅に入れておけば、普段の立ち居振る舞いや意識の持ち方が変わるはずです。
2. コーディングのお作法を身につける2冊
プログラムは動けば良いわけではなく、守るべき作法があります。名前の付け方からコメントやコードの書き方まで、自己流の癖がつく前に良い作法を身につけておきましょう。
『リーダブルコード』(オライリージャパン)
▽ リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) | Amazon
▽ リーダブルコード| O'Reilly Japan
ソースコードは他の人と共有するものです。読みにくかったり、保守や拡張がしにくかったりといった負の遺産にしないよう、読みやすく保守しやすいコードを書くためのノウハウが紹介されています。
『良いコードを書く技術』(技術評論社)
▽ 良いコードを書く技術 -読みやすく保守しやすいプログラミング作法 | Amazon
▽ 良いコードを書く技術 ― 読みやすく保守しやすいプログラミング作法:書籍案内|技術評論社
リーダブルコード同様、読みやすくて保守のしやすいプログラミング作法を学ぶ本です。こちらの本は、リーダブルコードより容易な内容なので、リーダブルコードが難しく感じる場合は、先にこちらを読むと良いでしょう。
3. インフラの基礎知識を身につける4冊
開発の際には実行のためのインフラ環境が必要不可欠です。仮想化・Dockerなど、現在広まっているインフラ環境を学んでおきましょう。インフラ技術も日々新しいものが登場し、トレンドも移り変わっていくので、常に新しいものを取り入れるマインドを忘れずに。
『Amazon Web Services実践入門』(技術評論社)
▽ Amazon Web Services実践入門 | Amazon
▽ Amazon Web Services実践入門:書籍案内|技術評論社
AWS(Amazon Web Services)を個人開発でも仕事でも利用する機会は多いでしょう。この本では、数多くあるAWSのサービスの中で、利用頻度の高いものを取り上げているので、AWSを使う際にはきっと参考になるでしょう。
『サーバ/インフラ徹底攻略』(技術評論社)
▽ サーバ/インフラ徹底攻略 | Amazon
▽ サーバ/インフラ徹底攻略(WEB+DB PRESS plusシリーズ)|技術評論社
インフラ構築・運用の自動化が一般的になってきています。この本では、Chef、Vagrant、Serverspecなどの自動化ツールが紹介されています。他にも、AWS、テスト駆動インフラ・インフラCI、Immutable Infrastructure、nginx、サーバメンテナンスが取り上げられているので、幅広い領域の知識が学べます。
『クラウドを支える技術 ──データセンターサイズのマシン設計法入門』(技術評論社)
▽ クラウドを支える技術 ―データセンターサイズのマシン設計法入門 | Amazon
▽ クラウドを支える技術 ──データセンターサイズのマシン設計法入門:書籍案内|技術評論社
Googleのデータセンターを題材に巨大なクラウドの関連技術を紹介しています。小規模なシステム開発をする場合でも、大規模になったときにどうすれば良いのかをあらかじめ知っておけば、将来的にシステムを拡張しやすい設計が行えるでしょう。
『インフラデザインパターン──安定稼動に導く127の設計方式』(技術評論社)
▽ インフラデザインパターン ~安定稼動に導く127の設計方式 | Amazon
▽ インフラデザインパターン ── 安定稼動に導く127の設計方式:書籍案内|技術評論社
インフラ設計の定石をデザインパターンとしてまとめたもので、一通り学んでおけば一般的なインフラの設計時に必要な要素を網羅できます。
4. 最新技術の基礎知識を身につける2冊+α
新しい技術が日々登場しています。トレンドの技術に触れて幅広い分野の知識をアップデートしていきましょう。インターネットで得られる情報も多いですが、知識を体系化させるならしっかりとまとめられた書籍が良いでしょう。大切なのは、常に学び続ける習慣を身につけることです。
WEB+DB PRESS plusシリーズ「徹底攻略」
「徹底攻略」シリーズは、各分野の基礎知識を幅広く網羅しています。Web系の新人エンジニアであれば、まずは以下の2冊を理解した後に興味のある分野の「徹底攻略」を読み進めて知識の幅を広げていきましょう。
『開発ツール徹底攻略』(技術評論社)
▽ 開発ツール徹底攻略 (WEB+DB PRESS plus) | Amazon
▽ 開発ツール徹底攻略(WEB+DB PRESS plusシリーズ)|技術評論社
『Webサービス開発徹底攻略』(技術評論社)
▽ Webサービス開発徹底攻略 (WEB+DB PRESS plus) | Amazon
▽ Webサービス開発徹底攻略:書籍案内|技術評論社
『WEB+DB PRESS』『Software Design』(技術評論社)
『WEB+DB PRESS』や『Software Design』を購読し、毎号取り上げられる最新技術をキャッチアップし、知識を常にアップデートさせていきましょう。
▽ WEB+DB PRESS|技術評論社
▽ Software Design|技術評論社
おわりに
勉強の仕方は人ぞれぞれ好みがあります。本を読んで理解をした後に手を動かしたい人、手を動かしながら読み進めたい人、業務で必要に迫られないと身が入らない人など。勉強すること自体に加え、自分が一番効率良く学べるスタイルを見つけることも重要です。
インターネットで技術を学んでいく場合は
- 書かれていることが正しいのか
- 自分に役立つ内容なのか
- 古いものではないか
などの判断ができるかがポイントです。それが難しい段階では、書籍で学ぶことをおすすめします。
執筆者プロフィール
池田健人(いけだ・けんと) @ikenyal
編集:薄井千春(ZINE)