未経験からWebエンジニアになった1年目に読んだ本19冊をふりかえる

未経験でエンジニアになって1年が過ぎました。この1年早く一人前のエンジニアになろうとたくさん本を読みました。
知識武装をしたからと言って、その武器の使い方を知らなければ何の役にも立ちません。正直、私はここで紹介する本から得た知識の1割も使えていない気がします。何度も同じ本を読んで、それを業務で実践して、何年もかけて自分のものにしていくのだと思います。たくさん本を読んでいくら勉強したってただただ知らないことが増えていきます。そしてつらい時間が永遠に続きます。もっとペースをあげて勉強していく必要があると落ち込みます。しかし、知らないことを知るというのはとても楽しいことでもあります。嬉しいことでもあります。
全部で19冊紹介しています。同じように未経験でエンジニアになった方に少しでもお役に立てればと思います。

# この記事の対象者
- これからエンジニアになりたい人
- エンジニア1年目で勉強していきたい人

# エンジニア全般
## <a target="_blank" href="https://amzn.to/3Ri7zSd">プログラムはなぜ動くのか</a>

プログラムがコンピュータ内部でどのように処理されて、どのように動作をしているのか理解することができます。そこそこプログラムは書けるようになりました！の次に読む本です。


## <a target="_blank" href="https://amzn.to/3uUgRwr">良いコード/悪いコードで学ぶ設計入門</a>

プロジェクトを壊さないために、むしろプロジェクトを円滑に進めるための良いコードの書き方を説明した本です。良いコードだけじゃなく、悪いコードの例も沢山書いてあるので、この書き方しちゃってたよ…って落ち込みました。過去は取り消せないので次から頑張ろうと思いました。

## <a target="_blank" href="https://amzn.to/3uRKa2F">オブジェクト指向でなぜ作るのか</a>

オブジェクト指向ってカプセル化とかポリモーフィズムとかインスタンスとかそういうやつでしょ？わかってるよ？って、だけど実際何したらいいかわかんないっていう時に読んで、うわべだけの理解だったんだなとなりました。オブジェクト指向を使えるようになるための本です。

# Web技術
## <a target="_blank" href="https://amzn.to/41n9Z6Y">Webを支える技術 -HTTP、URI、HTML、そしてREST</a>

「Web」について歴史や仕組みなど説明した本です。知ってるよ！って人は知ってるだろうなっていう基本的な知識が書いてあります。初心者としては知らないことばかりで面白かったです。

## <a target="_blank" href=https://amzn.to/3NmcCjp">「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか</a>

「Webを支える技術」と似た内容ですが、こちらの方がより実践的な使える内容になっています。Javaを中心に説明してあるので、普段Javaを使っている方にはとてもためになると思います。

# Java
## <a target="_blank" href="https://amzn.to/3NIqRQ3">徹底攻略Java SE 11 Gold問題集[1Z0-816]対応</a>

これでJavaを勉強しました。

## <a target="_blank" href="https://amzn.to/3TjSYZo">［改訂新版］Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ</a>

正直難しくてなかなか理解できないですが、Springの仕組みを理解する上ではとてもためになりました。

# DB
## <a target="_blank" href="https://amzn.to/3TiYmvz">OSS教科書 OSS-DB Silver Ver.3.0対応</a>

PostgreSQLはこれで勉強しました。

## <a target="_blank" href="https://amzn.to/41hXcCP">達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ </a>

OSS-DB Silverで基本的なSQLは理解したよ！の後に読みました。業務で使えるSQLを学べました。初級者を脱したい！っていう人にオススメです。

## <a target="_blank" href="https://amzn.to/3Nmd3dx">達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ</a>

DB設計に携わることはまだないのですが、業務の中で既存のDBを理解する上でとても役に立ちました。いつかDB設計することになったときまた読みます。

# テスト
## <a target="_blank" href="https://amzn.to/3Rfi4G0">【この1冊でよくわかる】 ソフトウェアテストの教科</a>

こんなにちゃんとテストをしていない！と思いました。テスト手法が具体例付きでわかりやすくまとめられているので、この本見ながらテスト設計していったらいいなと思いました。

## <a target="_blank" href="https://amzn.to/3GVvhiJ">JUnit実践入門 ~体系的に学ぶユニットテストの技法</a>

これを手元に置いたておけばJUnit書けます！ただJUnit4で説明されているので、基礎知識はこの本で理解して、実際に書くときはJUnit5を自分で調べながらになりました。しかしとても役立ちます。

# OS
## <a target="_blank" href="https://amzn.to/46ZIu4E">［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識</a>

手を動かしながらLinuxを理解できます。CとPythonで説明してあるので、Javaしかわからない私は苦戦しました。LinuxのついでにC言語とPythonの勉強にもなりました。

## <a target="_blank" href="https://amzn.to/46RD9Mr">コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方</a>

コンピュータを知るためにはコンピュータを作ろう！という本です。すぐ挫折しました。最後まで走り切ればテトリスが完成するとのことです。数ヶ月後再チャレンジします。

# Docker
## <a target="_blank" href="https://amzn.to/3Tj3Y9b">Docker&amp;仮想サーバー完全入門</a>

Dockerを全く触ったことがありません！っていう人でもこの本に沿って進めていけば、基礎+αくらいの業務に使えるくらいの知識はついちゃうDocker入門オススメ本です。

# ネットワーク
## <a target="_blank" href="https://amzn.to/4a7Gg61">マスタリングTCP/IP―入門編―</a>

通信プロトコルのデファクトスタンダードであるTCP/IPについての本です。めちゃ長いです。TCP/IPってなに？おいしい？っていうレベルで読んだので正直かなり難しかったです。基礎知識は身についた気がするので、ネットワーク初心者にはなれたかなと思います。

# Git
## <a target="_blank" href="https://amzn.to/3uRKJtj">いちばんやさしいGit&amp;GitHubの教本 第2版 人気講師が教えるバージョン管理&amp;共有入門</a>

Gitこわい！プッシュ怖い！マージ怖い！って感じだったのですが、この本を読んで怖くなくなりました。使い方を理解したらこんなに便利なものはありませんでした。

# 精神的な部分
## <a target="_blank" href="https://amzn.to/47PCwo4">SOFT SKILLS ソフトウェア開発者の人生マニュアル>

アメリカのエンジニアすげえ。参考にならない部分も多々ありましたが、つよつよエンジニアになるためのモチベーション維持に時々読もうと思います。

## <a target="_blank" href="https://amzn.to/3GBLxoH">達人プログラマー(第2版): 熟達に向けたあなたの旅</a>

ここに書かれていることがエンジニアの心構えらしいです。なるほどぉとなります。エンジニアはみんな読んでるらしいので読みました。

# おわりに
2年目はインプットだけでなくアウトプットも意識して邁進して参ります。

# 参考サイト
### <a target="_blank" href="https://www.technical-books.com">技術書.com</a>