【Webエンジニアど素人】が【3〜4年生】くらいになったら読むといい本を目的別にまとめた

#これってなんなの？
**【ど素人状態＝社会人になって初めてプログラミングを勉強したぜ！（特に新卒）】**でスタートした方々が**【３年生】**ぐらいになったら読むと良い本まとめです。

**「どんな目的で学ぶか？」＊「職種（[バックエンド](#%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2)/[フロントエンド](#%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2)/[SRE・インフラ](#%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9sre%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2)/[データエンジニア](#%E3%81%8A%E3%81%BE%E3%81%91%E3%83%87%E3%83%BC%E3%82%BF%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%82%B9%E3%83%88%E3%81%93%E3%81%93%E3%81%AF1%E5%B9%B4%E7%9B%AE%E3%81%AB%E8%AA%AD%E3%82%93%E3%81%A0%E6%96%B9%E3%81%8C%E3%81%84%E3%81%84%E3%82%82%E3%81%AE%E3%82%82%E6%B7%B7%E3%81%98%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99mm)/[どの職種のエンジニアも](#%E3%81%A9%E3%81%AE%E8%81%B7%E7%A8%AE%E3%81%AE%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%82%82)）」**で整理しました。

[「【Webエンジニアど素人から３年生ぐらいになるまでに読むと良い本】を段階的にまとめた」] (https://qiita.com/JunyaShibato/items/3aa5f7f3fc991de17f3f)の続編です。少しでも皆さまの学びと成長に貢献できると幸いです。

# ”Webエンジニアど素人が、3〜4年生くらいになったら読むといい本”の段階的まとめ（一部外部記事あり）
## <font color="Blue">バックエンドエンジニア</font>
###「より整理・洗練されたコードに改善できるレベルになろう！」
* [リファクタリング(第2版): 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES)](https://www.amazon.co.jp/dp/4274224546/)
* [レガシーコード改善ガイド](https://www.amazon.co.jp/dp/4798116831/)
* [Clean Code アジャイルソフトウェア達人の技](https://www.amazon.co.jp/dp/4048930591/)

###「複雑なドメインに対する基本原則を理解して設計できるレベルになろう！」
* [エリック・エヴァンスのドメイン駆動設計](https://www.amazon.co.jp/dp/B00GRKD6XU/r)
* [実践ドメイン駆動設計](https://www.amazon.co.jp/dp/B00UX9VJGW)

###「アーキテクチャを考えられる、理解できるレベルになろう！」
* [ Clean Architecture 達人に学ぶソフトウェアの構造と設計](https://www.amazon.co.jp/dp/B07FSBHS2V/)
* [ビューティフルアーキテクチャ (THEORY/IN/PRACTICE) ](https://www.amazon.co.jp/dp/4873114306/)
* [Design It! ―プログラマーのためのアーキテクティング入門](https://www.amazon.co.jp/dp/4873118956/)
* [データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理](https://www.amazon.co.jp/dp/4873118700/)
* [エンタープライズ アプリケーションアーキテクチャパターン](https://www.amazon.co.jp/dp/4798105538)

###「フレームワークに頼るだけでなく、今一度、仕組みから学び直そう！」
* [Real World HTTP 第2版 ―歴史とコードに学ぶインターネットとウェブ技術](https://www.amazon.co.jp/dp/4873119030/)
* [コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 ](https://www.amazon.co.jp/dp/4873117127)
* [暗号技術入門 第3版　秘密の国のアリス](https://www.amazon.co.jp/dp/B015643CPE)
* [ふつうのLinuxプログラミング 第2版　Linuxの仕組みから学べるgccプログラミングの王道](https://www.amazon.co.jp/dp/B075ST51Y5)

###「DB設計、パフォーマンスチューニングの知識を見直そう！」
* [詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド](https://www.amazon.co.jp/dp/4798147400/)
* [実践ハイパフォーマンスMySQL 第3版](https://www.amazon.co.jp/dp/4873116384)

## <font color="Blue">フロントエンドエンジニア</font>
###「ブラウザの仕組みを理解して、パフォーマンス改善できるレベルになろう！」
* [Webフロントエンド ハイパフォーマンス チューニング](https://www.amazon.co.jp/dp/B0728K5JZV/)
* [ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール](https://www.amazon.co.jp/dp/487311361X/)
* [続・ハイパフォーマンスWebサイト ―ウェブ高速化のベストプラクティス](https://www.amazon.co.jp/dp/4873114462/)

###「デザインのことも理解して、UI／UXを継続的に改善できるレベルになろう！」
* [誰のためのデザイン？](https://www.amazon.co.jp/dp/4788514346/ref=cm_sw_em_r_mt_dp_NvR2Fb820S6M5)
* [Material Design](https://material.io/)
* [Human Interface Guidelines - Apple Developer](https://developer.apple.com/design/human-interface-guidelines/)
* [Sociomedia　ヒューマンインターフェース ガイドライン](https://www.sociomedia.co.jp/category/shig)
* [ユーザーエクスペリエンスの測定 ](https://www.amazon.co.jp/dp/4501552905/)

###「今一度、JavaScriptを言語仕様、お作法から理解するレベルになろう！」
* [開眼! JavaScript ―言語仕様から学ぶJavaScriptの本質]( https://www.amazon.co.jp/dp/487311621X/)
* [パーフェクトJavaScript](https://www.amazon.co.jp/dp/477414813X/)
* [JavaScriptパターン ―優れたアプリケーションのための作法](https://www.amazon.co.jp/dp/4873114888/)

## <font color="Blue">インフラ・SREエンジニア</font>
###「SREの使命は？を理解しよう！」
* [SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム](https://www.amazon.co.jp/dp/4873117917)
* [エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング](https://www.amazon.co.jp/dp/4774196053)

###「柔軟かつ迅速に対応できるシステムインフラを実現するための知識を身につけよう！」
* [入門 監視 ―モダンなモニタリングのためのデザインパターン](https://www.amazon.co.jp/dp/4873118646)
* [Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス](https://www.amazon.co.jp/dp/4873117968)
* [高信頼システム構築標準教科書](https://linuc.org/textbooks/system/)
* [詳解 システム・パフォーマンス](https://www.amazon.co.jp/dp/4873117909/)
* [Building Secure and Reliable Systems](https://www.amazon.co.jp/dp/1492083127/)

###「ハイパフォーマンスを実現するケイパビリティを理解し、実践できるレベルになろう！」
* [LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する (impress top gear)](https://www.amazon.co.jp/dp/4295004901/)
* [The DevOps ハンドブック 理論・原則・実践のすべて](https://www.amazon.co.jp/dp/4822285480/)
* [The DevOps 逆転だ!](https://www.amazon.co.jp/dp/4822285359/)
* [The Site Reliability Workbook: Practical Ways to Implement SRE](https://www.amazon.co.jp/Site-Reliability-Workbook-Practical-Implement/dp/1492029505)
* [継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化](https://www.amazon.co.jp/dp/4048707876)

###「今一度、ネットワークの基礎を学び直そう！」
* [ネットワークはなぜつながるのか ― 知っておきたいTCP/IP、LAN、ADSLの基礎知識](https://www.amazon.co.jp/dp/4822281515)
* [マスタリングTCP/IP―入門編―](https://www.amazon.co.jp/dp/4274224473)

###「今一度、体系的にOS・クラウドの基礎を学び直そう！」
* [Linux教科書 LinuCレベル2](https://www.amazon.co.jp/dp/4798167967)
* [AWS認定ソリューションアーキテクト-プロフェッショナル](https://www.amazon.co.jp/dp/4865942483)
* [Amazon Web Servicesインフラサービス活用大全 システム構築/自動化、データストア、高信頼化 impress top gearシリーズ](https://www.amazon.co.jp/dp/B07X381YBW/)



##<font color="Blue">どの職種のエンジニアも</font>

###「前例としてどんなキャリアがあるのか？も知って、今一度自分自身と向き合って、改めて楽しく目的・目標を設定しよう！」
* [SOFT SKILLS　ソフトウェア開発者の人生マニュアル](https://www.amazon.co.jp/dp/B01GDS0994/)
* [CAREER SKILLS　ソフトウェア開発者の完全キャリアガイド](https://www.amazon.co.jp/dp/B07FCYSNXT/)
* [エンジニアのためのマネジメントキャリアパス ―テックリードからCTOまでマネジメントスキル向上ガイド](https://www.amazon.co.jp/dp/4873118484/)
* [情熱プログラマー ソフトウェア開発者の幸せな生き方](https://www.amazon.co.jp/dp/4274067939/)
* [スーパーエンジニアへの道―技術リーダーシップの人間学](https://www.amazon.co.jp/dp/4320025636/)

###「ソフトウェア品質の全体像、対策を理解したレベルになろう！」
* [ソフトウェア品質保証の考え方と実際―オープン化時代に向けての体系的アプローチ](https://www.amazon.co.jp/dp/4817161108/)
* [ソフトウェア品質知識体系ガイド第3版 SQuBOK Guide V3](https://www.amazon.co.jp/dp/427422631X/)

###「テストも一体化したソフトウェア開発を実現しよう！」
* [テストから見えてくる グーグルのソフトウェア開発](https://www.amazon.co.jp/dp/482228512X)
* [ソフトウェアテスト293の鉄則](https://www.amazon.co.jp/dp/482228154X/)

###「品質をビジネスと繋げて理解しよう！」　＊QAエンジニアの人だけでもいいかも
* [ソフトウェア品質の経済的側面](https://www.amazon.co.jp/dp/4320097629/)

###「不確実性を見える化するプロジェクト管理の基礎を理解しよう！」
* [クリティカルチェーン―なぜ、プロジェクトは予定どおりに進まないのか?](https://www.amazon.co.jp/dp/4478420459/)
* [アジャイルCCPM: プロジェクトのマネジメントを少し変えて組織全体のパフォーマンスを大きくのばす](https://www.amazon.co.jp/dp/B0758K6NXB/)


###「正確に要求を分析できるレベルになろう！」
* [モデルベース要件定義テクニック](https://www.amazon.co.jp/dp/4798039446)
* [【改訂第２版】［入門＋実践］要求を仕様化する技術・表現する技術 ～仕様が書けていますか？](https://www.amazon.co.jp/dp/B07729YVZC/)
* [正しいものを正しくつくる　プロダクトをつくるとはどういうことなのか、あるいはアジャイルのその先について](https://www.amazon.co.jp/dp/B07SGCH8R6/)

##おまけ：<font color="Blue">データエンジニア、データサイエンティスト（ここは1年目に読んだ方がいいものも混じってますmm）</font>
###「ビッグデータの使い所、各ミドルウェアの分類などを把握するレベルになろう！」
* [ビッグデータを支える技術　刻々とデータが脈打つ自動化の世界 WEB+DB PRESS plus](https://www.amazon.co.jp/dp/B07JGLQM2G/)

###「データサイエンスの実践的な技術を身につけよう！」
* [Kaggleで勝つデータ分析の技術](https://www.amazon.co.jp/dp/B07YTDBC3Z/)
* [[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)](https://www.amazon.co.jp/dp/4295003379/)

###「機械学習って何が実現できるのか？の基礎知識を身につけよう〜機械学習を深堀ろう！」
* [集合知プログラミング](https://www.amazon.co.jp/dp/4873113644)
* [機械学習プロフェッショナルシリーズ](https://www.kspub.co.jp/book/series/S043.html)
* [機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践](https://www.amazon.co.jp/dp/4873118689/)
* [パターン認識と機械学習 上](https://www.amazon.co.jp/dp/4621061224)
* [パターン認識と機械学習 下](https://www.amazon.co.jp/dp/4621061240)

###「自然言語処理に関連する動向をキャッチアップしよう！」
* [ゼロから作るDeep Learning 2](https://www.amazon.co.jp/dp/4873118360/)

#補足
弊社都合で、DBはMySQL、クラウドはAWSだけを対象にしています。

#対象読者
動くものは作れるようになった!!　が・・・

* あれ？後輩に説明ができない…
* データが増えたら急に動かなくなる…
* ファイルサイズが大きくなると動かない…
* 調査しようとしたらログが追跡できない…
* TOIL多いよ…
* リリースするたびにエラーが生じる…うんざり…
* 1つ共通の処理を追加したいが、変更が多岐に渡りすぎる…
* 何が足りなくて何を得ればいいのか、どの技術領域を学べばいいのか…
* “簡単に”作ってという言葉にイラつく…

などなど・・・という経験をしたことのある方もいらっしゃるのではないでしょうか。「ただ動くもの」と「いいもの」「使えるもの」「誇れるもの」とのギャップ。そういった方々に少しでも学びと成長になることを願っています。

# 仲間への想い
昔も今も尊敬している人に「インプットの質はアウトプットの質で決まる」（Goal-setting）と教わりました。何かを読む際にはどんな目的で読むのか、どんな行動をしたくて読むのかを設定して読むと効果が高まると考えています。

また、技術書紹介の中で矛盾するかもしれませんが、

* [ピープルウエア 第3版 ](https://www.amazon.co.jp/dp/4822285243/)

> 実際のところ、ソフトウェア開発上の問題の多くは、技術的というより社会学的なものである。

つまり、技術は大事、でも問題の多くは組織・人間系が原因であるという視点、そして、技術の先にある目的（お客様の問題解決・願望の実現、成し遂げたいこと・貢献したいことなど）も大事にしていきたいと思っています。これらをORではなくANDで考えられるエンジニアになって欲しいと思っています。

# 最後に
3年〜4年目くらいですと、ご自身の興味や向き不向き、キャリアに対するお考えを元に、ある程度領域を絞って専門性を磨いている/磨こうという方が多いのではないでしょうか。

[「新卒の子にどこまで勉強すれば良いですかね？と聞かれた件」](https://qiita.com/daijinload/items/0ee132950087da9366df)の記事でもおっしゃっているように、分野や職種は以下のように5つあったり、

* Application Engineer
* Infrastructure Engineer
* Database Administrator
* Security Engineer
* Technical Program Manager

[「ITエンジニア職種一覧・種類と仕事内容を解説」] (https://www.bigdata-navi.com/aidrops/3115/)　などでは、片手では数えられないぐらい細分化しています。

今回の記事で分類した職種、役割は、弊社の状況に合わせた内容かつ、一部であるため、一般と合っていない所があるかもしれません。組織の規模やステージにもよると思いますが、多くのソフトウェア企業でも共通して存在する職種だと思うので、何か1つでも助けになればと思います。

日々新たな技術や分野が誕生し、学び続けることは大変だという壁に当たっている方もいらっしゃるかもしれませんが、楽しみながら学んでいきましょ〜！
> 「これを知る者はこれを好む者に如かず。これを好む者はこれを楽しむ者に如かず」孔子『論語』

（何かを知っているだけという人は、それを好む者には負けてしまう。好きだ、という人は楽しむ人には及ばない。という意味）

メリークリスマス🎅🤶