未経験から2年働いたエンジニアの本紹介
目的
未経験で現職に入社して2年が経ちました。
入社1年目は、仕事の成果が上がらず、毎週の進捗会議で詰められていることが多かったです。その現状を変えるためにひたすら勉強に打ち込んでいました😭
もしまた0から始めるとしたら、今ならこの本を読む!というのをまとめます。
Java編
1冊目
私はJavaから始めたので、この入門書が一番わかりやすかったです!
実践編もあるのでそれと合わせると、実務で使える知識が増えて役立てました。
他に読んだ本としては、やさしいJava入門があります。
そちらも良い本でしたが、私はスッキリわかるシリーズの方が頭に入ったのでこちらを薦めます👌
ここで脱線
早速脱線しますが…
私は、1冊の本だけではなく、何冊か同じ内容を取り扱っている本を買う時があります。
レベルが自分に合っていない(本の難易度が高い)と感じたら、違う本を試してみています。
おかげさまで、本棚とお財布がキツくなるわけですが…
2冊目
本題に戻りまして、2冊目は
わかりやすいJava オブジェクト指向徹底解説
こちらになります。
この本で、業務に使える知識やオブジェクト指向を掴んだ記憶があります。
フィールドの宣言やカプセル化など、1冊目だけで掴みきれなかった内容をこの本で完全にマスターできました。業務レベルに引き上げてくれた一番の立役者はこの本だと思います!
3冊目
後に紹介するHTML・CSSとSQLの本の後に読んで欲しいのが、
Spring Framework超入門
こちらです。
生JavaやJSPとサーブレットでアプリ作るのも良いのですが、
フレームワークがあった方が先人の知を借りれるので使った方がいいと思います👀
Springの勉強を始めるならこの本が一番わかりやすいのでおすすめです。
4冊目(Web知識をつけてから読むべき)
フレームワークの理解をさらに深めるために、この本はマストで読むべきだと思っています。
ただ未経験1年目で読むものではなかったですね…
2年目くらいに読んで、何か作ってみるとSpringへの理解が深まると思います。
プロになるためのSpring(鎧本)
DB編
ここからはデータベースの本を紹介していきます。
データベースに関しては、自分は著者ミックさんの本を多く読んでいます。
ミックさんの本を買っとけばまず間違い無いです!
5冊目(6冊目と一緒に読むべき)
まずデータベースで読み始めるならこの本から始めるべきです。
データベースの基本的な操作から、モダンな書き方まで網羅されているのでこの本でマスターしておけば、業務で通用する基礎はつきます!
ゼロからはじめるデータベース操作
6冊目(5冊目と一緒に読むべき)
リレーションを理解するためにこの本を私は買いました。
ゼロからはじめるデータベース操作は、基本は抑えられるのですがテーブルの関係については、説明がないので、データベースの一番の特徴であるリレーションを抑えられないです。
業務でこれが痛手となって、長らく苦しみました...
この本でテーブル関係の基礎を掴んで、業務に活かしたました。
スッキリわかるSQL入門
7冊目
実際に上の本を読んでいて、CASE式やウィンドウ関数などの書き方は、どこで使うんだ?っていう疑問は解決できませんでしたが、ミックさんの続編の本がそれを解決してくれました!
SQL緊急救命室
正直、今の現場で使っているのはCASE式とウィンドウ関数くらいです。周りが知らない書き方を使うと、逆にコストが上がる場面がありました。この本で書いてあることは、実際に遭遇することの多いもの多いので、マストで読んでおくといいと思います。
レガシーであればあるほど、この本に書かれていることの素晴らしさを痛感します😍
8冊目(SQLへの知識をつけてからか、経験をつけてから読むべき)
次に紹介する本は言わずと知れた名著です。
ただ、難易度は高くなるので入門書を読んでから読むと挫折しやすいです。
私は1度挫折して本を置きました笑
この本を読むためには...
- 業務で経験を積む
SQLをどう書いて、欲しい結果を抽出するかを考えられるようになるには、SQLを書くしかないです。
そのためには、アウトプットか業務で経験を積みましょう! - 緊急救命室を読む
私は、早く読みたかったので7冊目の本を読んでから読むようにしました。
実際にミックさんの勧める読む順番に沿う形をとったわけです!笑
ミックさんには頭が上がらないです🙏
https://x.com/copinemickmack
9冊目(1年目からでも絶対読むべき!)
私が読んだ本の中でダイレクトに私のパフォーマンスに良い影響を与えた本はどれかというと、
一番に挙げるのはこの本ですね!
またもやミックさんの本で、もはや信者と言ってもいいくらいです笑
この本のおかげで、案件に入った時、テーブル構造を見てこのシステムは大体こんな感じなのかと理解をできるようになりました!
システムの全容を掴めるようになると、仕様書から求められていることは何なのか?が
大体が察せるようになる気がしています。
コーディング編
ここまで本を読み終えると、業務でコードは書けているはず…
ただし、コード品質が良いと限らないのです😭
コード品質が悪いと何が起きるかというと
- 予期せぬエラーが起きる
- 保守・改善がしずらい
など、デメリットしかありません。
タバコと一緒で百害あって一利なしです!
そこでコード品質を上げる本を2冊紹介します
10冊目
大体みんなが進める本ですよね笑
私の所感としては、
プログラミングができるようになる -> リーダブルコードを読む -> わかった気になる
この状態で、最初はいいと思っています。最低限度のコード品質は保てると思いますので…
ある程度実務で経験を積んだり、アウトプットを重ねてから再度読み直すとこの本から多くのことを得られます。私の場合は、何件かシステムの改修経験を積んで、本からの教訓を身にしみて体験できました。
11冊目(絶対に読むべき本)
私が購入したのは、改訂前ですがこの本もまた私のパフォーマンスに良い影響を与えてくれた本です!
自分が書いたコードを1ヶ月後に読み直したら、他人のコードのように見えます。
その時、良いコードなのか、悪いコードなのかでその後のパフォーマンスが変わります。
実体験で言うと、
- 良いパターン
変更がしやすいように抽象化や関数化など工夫を凝らして作成した機能に、仕様の変更があった時に一部を書き換えて作業を完了させられた経験 - 悪いパターン
既存のコード(作成時は及第点のコードだが、現在では悪いコード)に書き加えただけの機能で、意図しないバグの発生や機能の説明を求められた時に、改修時以上に時間を取られた経験
悪いパターンの時は、自分が壊さないよう最低限しか手を入れなかったのですが、読み込まないとわからない仕様があって、バグを発生させたのでした...
基本的には、良いコードを書いて業務で良い経験を回していきたいものです
ネットワーク編
ここからは、Web知識の技術書紹介になります。
まず最初にネットワーク編。つまり通信技術についておすすめの本を2冊紹介します。
覚えることが多いことと、業務で触れる機会があまりない内容なので理解するのに中々苦労しました😭
12冊目(先にこれを読みましょう!)
この本の次に紹介する本の方が知名度が高いのですが、難易度も高いので大体の人が挫折します。
私もその一人で、どう克服したかというとこの本をまず読みました!
ちょうどその時クラウドも触っていたので、その内容と紐付けて覚えました。
13冊目(これは周辺知識をつけてから読みましょう…)
一番心を折られた本です笑
ただ2年目後半、クラウドの知識も身につけてから読むと頭に入りやすかったです。名著と言われる所以もわかる内容でした。経験浅い時期に読んでも身につくものは少ないかなーと思っています。
この本の効力として、
- ベテランと通信技術について話ができるようになる
- 低レイヤーで何が起きているかなんとなく掴める
読んでおいて損はない本ですが、読む時は実力をつけてからにしましょう笑
API編
14冊目
業務でAPIって単語はよく聞くものの、結局詳細を理解していない時期が長く続いていました。この本を読めばAPIについての基礎知識はマスターできます。
APIを理解していなくても、実装をすることはできます。
- APIが適したメソッドを使っているか
- URLの命名が適切か
など、考慮することは多くあります。
またRestAPIを理解している人の設計としていない人の設計は全然違います。
(そもそもOpenAPIやPostmanを使えばそれなりになるかと思いますが...)
知っている・理解していることで、パフォーマンスに差が出る部分だと感じました。
Web知識基礎編
Web知識を学ぶことで得られるものとして、アプリケーションがどのように作られているのかが理解できます。理解できるとフレームワークのキャッチアップが容易になるメリットがあります。
例えば
Angular.jsを学んだけど、使われなくなった...
-> Reactを学ぶ!
けど学び直すのは億劫...
こういった現象が起きるのは、基礎ができていないからだと言えます。
基礎ができると、フレームワークで何を実現したいのか大体察せます。
(私はまだフロント系だと、あまり察せていませんけどね...)
15冊目
改訂版が出たのが最近で、私は改訂版を買いました。
この時期にGo言語を少し学び始めました。この本はGo言語でサンプルコードが書かれているので、理解するために勉強しました。
さて、この本はエンジニアとして必要なWeb知識を網羅的に学習するのに適した本といえます。
- アプリの仕組み
- セッション
- クッキー
などさまざまな内容を学べます。これは「1年目のうちに読みたかった。」そう言えるくらい内容が素晴らしかったです。またGo言語で書かれていたのも、相まってコードも読みやすく、本を読んでいて楽しかったです。
16冊目
プロになるためのWeb技術入門を読んだ後に読むとおすすめです。
内容は重複している部分は多いですが、復習機会になりますし理解が深まります。
2冊を組み合わせて読んだ結果、HTTPについては、一定的な自信がつきました。
HTTPプロトコルはよく使われる技術ですので、理解しておきたい技術No.1だと思います!
啓発編
17冊目
この本を通して、私の偏った経験に足りない知識が何かを知れました👀
未知の知を知れた本でもあります。
読んでいて「?」の時はありましたが、その時は調べて「こう言うことか!」と気づきを得ることで、実務での選択肢を広げました。
選択肢を持てるということが、凡庸な私にとって一番武器になります。先人達の知見を得られると言う点でこの本は1年目後半から読むと良いと思います🔥
18冊目
みなさんご存知の達人プログラマーです。
プリンシプル オブ プログラミングの後に読むと良い本です。私はテストが得意ではないので、テスト周りの部分でつまづいています...
内容が難しめなので、調べながら長い時間をかけて内容を吸収していくものだと思ってます。
特にロジックの部分で、関心ごとの分離や抽象化は難しかったのですが、理解しておくと実務で役立つ時が来ると思います。
AI編
19冊目
AI系のキャッチアップは、フロントエンドの技術以上に流行り廃りが激しいです😎
AIを利用する上での基礎を学ぶなら、この本が良いと思います。
これより更に専門的な内容(LangChainやRAGなど)に関しては、私はキャッチアップができていないのですが、いつか学びたいと思います。
さて、この本ではAIの効率的な活用方法について学べます。
Zero-Shotプロンプトや役割を与えるなど、今すぐに活用できる内容があります!
フロントエンド編
私はバックエンド中心に業務を携わっていますが、フロントエンドの実装もたまにする機会があるのでJavaScript/TypeScriptを中心に学習をしました。
20冊目
本当の初学者向けのJavaScript本は、実務を経験してから学ぶには少し物足りないと感じました😭
そこで少し難易度が高めの本を選択しました。
21冊目
著者はCodeMafiaの外村さんです。
JavaScriptで困る一番のこととして一番に挙げられるのが、prototypeとthisにあると思います。
2冊を比較して読みながら理解に努めました。
22冊目
TypeScriptで一番有名なブルーベリー本です。
この本でTypeScriptは概ね理解しました。JavaScriptの本と比べてもわかりやすい内容でした。
23冊目
Reactを学ぶために購入しました。
改訂版も出ています。私は、最初からTypeScriptでコードを書いてみるようにしました。
このやり方だと、Reactへの理解とTypeScriptの理解両方が得られるのでおすすめです!
コンテナ編
実務で実装実績はありませんが、現職に勧めている所です。
メールサーバーをテスト用にMailhogを使ったことがあるくらいですが、Dockerを使えるようになると便利な場面が多いかと思います。
24冊目
これで基本中の基本は掴めます。
入門の一歩目に向いている本と言えます。
仕組みと使い方がわかるDockerとkubernetesのきほんのきほん
25冊目
実践入門とあるだけあって、難易度が急に上がりました笑
LinuxやShell、Makefileを理解していると、理解しやすいと思います。
Dockerを使いながらLinuxやShellを覚えるのが効率良さそうです。4章まで読んで、実際に自分が使用している言語で環境構築をしてみると良いと思います。
クラウド編
バックエンド + クラウドの両軸で専門性を高めたいと考えているので、今一番頑張っている領域です。
26冊目
ITインフラの基礎知識からつけよう!と思い、この本を購入しました。
実際には、AWSを学んでいる途中でインフラ知識が足りていないと実感したのがきっかけです笑
基礎の基礎知識で学んでおくと、通信技術への理解と合わせやすいです。
27冊目
AWSの全体像を知るのに役立ちました。
この本を読んですぐにサーバーが構築できるわけではありませんが、全体像を把握しておくことで何が理解できていないか把握しやすいです。
28冊目
最初の一歩を踏み出すために購入しました。
難易度もちょうど良く、流れをつかめます。
実際、Udemyなどの教材でも同じような内容になっていますので、つまり大枠はこれで十分です。
29冊目
AWSの設計スキルを身につけるために購入しました。
ネットワーク構築をするために、どう考えれば良いのか。どう設計すれば良いのか。それを学ぶのに適した本でした。
30冊目
クラウドネイティブなアプリケーションとは何か、モダンアプリケーションを実現するためにAWSをどう活用するのかを理解したくて購入しました。
実際、まだ私には早かったですが、今後のアウトプットで実現したいと考えています。
番外編〜Go〜
Goで開発をしたいと考えていまして、3冊購入しました
31冊目
著者 酒井さんの本です。
わかりやすいですし、いろんな知識を与えてくれる本です。これで基礎はある程度覚えました。
32冊目
私は改定前の本を購入しています。
開発で行き詰まった時に読むようにしています。
33冊目
31冊と比べながら読んでいました。理解を深めるために買った比較用の本となります。
番外編〜Git〜
Git公式サイト
Udemyで山川さんの動画を受講して、基礎の基礎をマスターしました。
その後、更に理解を深めるためにGit公式の内容を読みました。Git公式なだけあって、網羅的に学べるのでおすすめです🔥
周りはちゃんと理解していない方が多いのですが、理解していると問題が起きた時に活かせるスキルですし、AIを活用するときにGitは必要不可欠なものになります。
最後に
足りていないスキルが多く、ずっと焦っている時期が長く続いていたのもありアウトプットよりもインプット中心に勉強をしていました。
今考えると、もったいなく思います。アウトプットをもっとしておけばよかったなと思っています。
今後はアウトプットとバランスを取りながら、学習をしていきます。
Githubは基本的に毎日草を生やすようにしています。
Discussion