【Webエンジニアど素人から3年生ぐらいになるまでに読むと良い本】を段階的にまとめた

これってなんなの?

【ど素人状態=社会人になって初めてプログラミングを勉強したぜ!(特に新卒)】〜【Webエンジニアの3年生ぐらい】になるまでに読むと良い本まとめです。「どんな目的で学ぶか?」*「いつぐらいまでに読むといいか?」を段階的にまとめました。「これだけ読めばいい!」と、そんな簡単な話ではありませんが、「今いるレベルより少し上の人がどんなジャンルのことを学んでんだろ?」という方の参考になれば嬉しいです。過去の自分に向けてでもあります、自戒。これからWebエンジニアになる人、なって間もない人の参考になれば幸いですm(__)m

”Webエンジニアど素人から3年生ぐらいになるまでに読むと良い本”の段階的まとめ(一部外部記事あり)

ど素人の方々が手を動かしながら1〜6ヶ月以内に学ぼう!

どの職種のエンジニアも全員学ぼう!

「1つの言語を理解し、動作させることができるレベルになろう!」

「SQLの基礎を理解して、操作できるレベルになろう!」

「HTML/CSS/JSの基本的な記法とそれぞれの役割を理解したレベルになろう!」

「Linux基本操作を身につけたレベルになろう!」

「最低限他人が読めるコードをかけるようになるレベルになろう!」

「基本となるアルゴリズムとデータ構造を最低限理解したレベルになろう!」

「Webエンジニアとして働くなら絶対使う・・・学ぼう!」

1年〜2年以内に頑張って学ぼう! 

※ここからは、学ぶ分野の全体感、概要を把握して、人に応じて挫折しないように理解や学びの濃淡はつけた方が良いと思います。

どの職種のエンジニアも全員学ぼう!

「システム開発に関係すること全般の基礎的な知識を身につけたレベルになろう!」

「オブジェクト指向言語について何がありがたいのか?を説明、理解をしているレベルになろう!」

「RDBの仕組みの知識・SQLの基本的な書き方を身につけたレベルになろう!」

「Linuxの仕組みの基礎的な知識を身につけたレベルになろう!」

「インフラ・ミドルウェアに関する基礎的な知識を身につけたレベルになろう!」

「自動テストについて基礎的な知識を身につけたレベルになろう!」

「アジャイル開発の基礎的な知識を身につけたレベルになろう!」(技術マネジメントを理解)

「エンジニアとして自立するために基本的な考え方を身につけたレベルになろう!」(心得的なもの)

「行儀の良いシステムを作る上で必要な知識を身につけたレベルになろう!」

「要件定義とは何か?非機能要件とは何か?基本的な考え方を身につけているレベルになろう!」

「Webアプリケーションの脆弱性を理解し、対策する知識を身につけたレベルになろう!」

「テスト設計の基本的な考え方を身につけているレベルになろう!」

「コンピュータが動く仕組みを最低限理解するレベルになろう!」

ここからはフロントエンジニア、バックエンジニアやQA寄りの人

「効率の良いアルゴリズムとはなんなのかを理解し、それぞ実際のコードに対して反映することができるレベルになろう!」

「プログラムの設計に必要な最低限の知識を身につけ、レビューを受けながら適切なクラス設計・開発ができるレベルになろう!」

※ちょいここ欲張りすぎ感あるかも…

「フレームワークも大事だけど、JavaScriptの基礎を理解したレベルになろう!」

「UI/UXに関する基本的なルールを理解したレベルになろう!」

「サービスの作り方について基本的な考え方を身につけたレベルになろう!」

ここからはインフラエンジニアやSRE寄りの人

「基礎的なシステムの運用知識を身につけているレベルになろう!」

「基礎的なTCP/IPの知識を身につけているレベルになろう!」

「各レイヤーの仮想技術を理解し、基礎知識を身につけたレベルになろう!」

「Linuxの基礎的なセキュリティ知識を身につけているレベルになろう!」

「内部監査の業務フローの基礎知識を身につけているレベルになろう!」

2年〜3年以内に頑張って学ぼう!

どの職種のエンジニアも全員学ぼう!

「RDB・テーブルの設計に合わせたSQLの書き方を身につけたレベルになろうね!]

「開発・運用に必要なミドルウェアの知識を身につけるレベルになろう!」

「チームとして実施される開発手法を理解し、メンバーとして適切な実践ができるレベルになろう!」(技術マネジメントを理解)

「サービスを作った上でどう分析するかについての知識を身につけるレベルになろう!」

 「チームの技術的なリスクを把握し、マネジメントと協力して円滑なチーム運営に寄与できるレベルになろう!」

ここからはフロントエンジニア、バックエンジニアやQA寄りの人

「基本的なフレームワークと設計思想を身につけた(MVVM, Reduxなど)レベルになろう!」

「自動テストについて実践的な知識を身につけたレベルになろう!」

「プログラミング言語に関する複数のパラダイムを理解し、その特徴を捉えているレベルになろう!」

「より堅牢なシステムを作るための手法について理解できているレベルになろう!」

「フレームワークや各種ライブラリの構造を理解し、適切に利用することができるレベルになろう!」

「より高いアルゴリズムに対する知識・知見を身につけ、正しいアルゴリズムを選択し、実装することができるレベルになろう!」

「UI/UXに関して正しい知識をもち、改善の可能性を提案することができるレベルになろう!」

ここからはインフラエンジニアやSRE寄りの人

「インフラ・ミドルウェアについて全体のアーキテクチャを考える上で必要な知識を身につけているレベルになろう!」

「サーバ構成を理解し、構築・運用することができるレベルになろう!」

「システム運用管理の基礎知識を身につけているレベルになろう!」

「サーバ管理の体系的な知識を身につけていて、サーバの基本的なトラブルシュートを一人で実施ができるレベルになろう!」

「Webサービスに必要なシステム環境を構築することができるレベルになろう!」

「既存の仮想基盤を理解・運用することができるレベルになろう!」

「既存サービスのクラウドインフラを運用することができるレベルになろう!」

「既存サービスに対して脆弱性テストができるレベルになろう!」

「内部統制の業務フローを理解し、指摘事項に対して適切に対応していくことができるレベルになろう!」

3年目くらいに頑張って学ぼう!

今後整理、追加します…

「プログラミング言語に関する複数のパラダイムを深いレベルで理解し、実際のコードに対して反映、また他社のプログラムのコードのレビューをすることができるレベルになろう!」

「既存サービスのアーキテクチャを理解できるレベルになろう!」

「安定的なシステム運営に必要なテスト方針を理解し、テスト設計・実践ができるレベルになろう」

・・・

補足

  • MacやWindowsの操作などITに関する一定以上のリテラシーはあることを前提にしています。
  • 言語の部分はRuby、OSはLinux、DBはMySQL、クラウドはAWS、JavaScriptのフレームワークは Vue.js からはじめた人を前提にしています。
  • NoSQL(RedisやDynamoなど)、正規化・非正規化などのテーブル設計とか入っていないものもいくつか・・・今後追記していきたい。
  • 弊社の状況に合わせた内容であるため、一般とあっていないとこがあるかもしれません。

そもそもの背景

リンクアンドモチベーションの開発組織には、パートナーの方、中途、新卒がいます。新卒は研修、OJTなどを通じ育成しています。"個の効力感の観点"と"事業の観点"から、勉強する技術分野を必要最小限に絞ることが効果的と思います。一方「自主的にどんどん学びたい」「どういった本読むのがいい?」という相談も受けます。そう言った人向けに自分や中途が読んできた本、技術顧問からもお勧めいただいた本を整理しました。

仲間への願い

基礎から理解して、「再現性」と「実効性」の高いレベルになってほしい。たまたま簡単な改修に当たった→できた!だけでは再現性がなく、勘違いも生まれやすく後々苦しみます。

基礎を理解せずに、ツールを使って動くものを作る、というだけの中身のないエンジニアになって欲しくはない。

  • ex.「設計」をするのに、機能だけでなく、非機能、サーバー、DB、PG(アルゴリズムなど)、ビジネスの拡張性を踏まえてどういう設計にすべきか?などを考えて設計できるかどうか?
  • ex.「テスト」をする/テストコードを書くのに、どんなケースを書かなければ、網羅しなければならないのか?を知識として知り、それをコードに落とすことができるか?

・・・そのために、最低限、どういう知識を身につけておけばいいのか?そのためにどんな本を読んで学べばいいかな?という1つのマップになればいいかなと。

最後に

もともとある程度まとめていた内容ではありましたが、改めて書き出すと、「あれもあるこれもある」とどんどん増えてしまいました...学んでいると、やるべきことがより見えてきて、こうなりがちなので、目的を定めて学ぶことの重要性を今更感じました。

ボリュームありすぎる感じが否めませんが、社会人になって初めてプログラミングをはじめた方や、新人エンジニアの方が勉強する際の参考として役立ててもらえれば幸いです。

こんなんおかしい、これのほうがいい、こうしたほうがいいなどアドバイスありましたら、いただけると幸いです。

今後は社内のシートをやめて、一言紹介文を足したり、新しいものを足したり、もうちょい順番つけたり、などここをアップデートしながら運用していこうと思います。

メリークリスマス🎅🤶

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account