エンジニアに転向して１年で開発チームのリーダーになるまでに勉強したことをまとめる

# これはなに？
自分は2020年8月ごろにプロダクトマネージャーからエンジニアに転向し、この1年半でバックエンド、フロントエンド、インフラなど色々やっているうちに気付いたらいちチームのリーダーを任されるまでになりました。なのでこの記事ではその間にどんなことを勉強したのかをまとめておこうと思います。

エンジニアになったばかりの人やこれからなる人の一つの参考になれば幸いです。


### 担当プロダクトの技術スタック
バックエンド：Python, flask
フロントエンド：JavaScript, Vue.js
DB：MySQL
インフラ：AWS


# 勉強したこと

メインとしてバックエンドのapi開発をやっていたため、フロントエンドは薄めになっています。

## とりあえず入門
**[Progate](https://prog-8.com/)**
受講コース：Git/Command Line/SQL/Python/HTML&CSS/JavaScript
とりあえず入門するのに手軽でよかったと思います。


**[キタミ式イラストIT塾 ITパスポート](https://www.amazon.co.jp/dp/4297124491)**

とりあえず基礎中の基礎をさらうために勉強しました。資格自体にめっちゃ意味があるとは思ってないですが、資格勉強をすることで一旦広く知識が得られるのはとても有益だと思っています。

## コンピュータの基礎
**[コンピュータはなぜ動くのか～知っておきたいハードウエア＆ソフトウエアの基礎知識](https://www.amazon.co.jp/dp/4822281655)**
**[プログラムはなぜ動くのか 第３版　知っておきたいプログラミングの基礎知識](https://www.amazon.co.jp/dp/4296000195)**

この２つはプログラミングの勉強をするにあたって、まず最初に読みました。いきなり言語の勉強をし始めるより基礎をちゃんとさらったことは良かったと思っています。

## Python

**[独学プログラマー Python言語の基本から仕事のやり方まで](https://www.amazon.co.jp/dp/4822292274)**
マジでこれから入ってよかった。オライリーから入ったら死んでたと思う

**[Pythonチュートリアル](https://www.amazon.co.jp/dp/4873119359)**
**[入門Python3](https://www.amazon.co.jp/dp/4873119324)**
ガチ初学者には向いてないです。一回プログラミングを通った人がPythonを学ぶのには○

**flaskアプリの自作**
flaskに関しては恥ずかしながら体系的なインプットをする前に、実務で教えてもらいながら見様見真似で少しずつ理解していきました。~~(というか１ヶ月くらいで実務に放り込まれたので時間がなかった)~~
代わりと言ってはなんですが、少し時間が経った頃にこの記事や関連記事を参考に、自分でflaskを使ったslackアプリをつくって遊んでいました。結構勉強になったと思います。

https://qiita.com/sh-tatsuno/items/55cd5f9e78b212fb57c2


## SQL
**[SQL 第2版 ゼロからはじめるデータベース操作](https://www.amazon.co.jp/dp/4798144452)**
select文は死ぬほど書いたことがあったのですが、それ以外は全くだったので基本をさらうために。

## HTML/CSS
**[これからWebを始める人のHTML&CSS,JavaScriptのきほん](https://www.amazon.co.jp/dp/4839959714)**
この辺はある程度はわかっていたのですが、改めてちゃんとエンジニアになるにあたって基本は押さえておこうと思って一応。

## JavaScript
**[Udemy 【JS】ガチで学びたい人のためのJavaScriptメカニズム](https://www.udemy.com/course/javascript-essence/)**
JS学ぶのにいい本ないですか？と聞いたら、これが一番わかりやすくておすすめ、と教えてもらったのがこちら。
結構基礎から非同期処理とかまで一通り扱ってくれて結構助かりました。

## Vue.js
**[Vue.js入門 基礎から実践アプリケーション開発まで](https://www.amazon.co.jp/dp/4297100916)**
とりあえず一番基本っぽいものをやりました。

## プログラミング基礎
**[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/dp/4873115655)**
括りかたわからなかったけど、言わずもがなの必読本。一番お世話になってる気がする。

## Linux
**[linux標準教科書](https://linuc.org/textbooks/linux/)**
**[Linuxコマンドポケットリファレンス](https://www.amazon.co.jp/dp/4774174041)**

ポケットリファレンスは、とりあえず通しでパラパラっと読んで、辞書的に使ってます。
最初はMacOSとLinuxの違いが分かってなかったので、オプションの違いとかで結構戸惑いました。

## Git
**[GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)](https://www.amazon.co.jp/dp/477416366X)**
実際にチームで開発する中での細かいルールとかは実務で教えてもらいながらにはなりますが、Gitに関する最低限の知識として絶対読むべきなやつ。

## セキュリティ
**[体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践](https://www.amazon.co.jp/dp/4797393165)**
めちゃくちゃ分厚くて心折れかけましたが、セキュリティに関する最低限の知識としてがんばりました。

## オブジェクト指向/デザインパターン
**[オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識](https://www.amazon.co.jp/dp/4296000187)**
**[デザインパターンとともに学ぶオブジェクト指向のこころ](https://www.amazon.co.jp/dp/4621066048)**

オブジェクト指向型の言語を使うにあたって最低限理解しておく必要があるだろうということで。
デザインパターンは正直ある程度実装に慣れた頃に読んで初めて意味があるかな、という感じです。

## アルゴリズム
**[プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問](https://www.amazon.co.jp/dp/479814245X)**
**[珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造](https://www.amazon.co.jp/dp/4621066072)**

実務でめちゃくちゃアルゴリズムに気を使わないといけないようなことがあるか、と言われたらそんなにないんですが、一通りやっておくことで普段の実装でも計算量とかを意識できるようになると思います。


## AWS
**[(模擬問題付き)改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応](https://www.amazon.co.jp/dp/4295010650)**
**[Udemy これだけでOK！ AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座（SAA-C02試験対応版）](https://www.udemy.com/course/aws-associate/)**
**[Udemy AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集（6回分390問）](https://www.udemy.com/course/aws-knan/)**

実務でちょいちょいawsに触れる機会があったのですが、一回体系的にインプットしたいな、と思ってとりあえず資格を目標に勉強しました。Udemyの講座が、試験対策だけでなく一通りハンズオン形式で触らせてくれたのでとてもありがたかったです。
一通り最低限の知識を入れたことで、その後の公式ドキュメントとかも読みやすくなった気がします。

## ネットワーク
**[３分間ネットワーキング](http://www5e.biglobe.ne.jp/~aji/3min/)**
全然３分じゃ無理ですが、とりあえずネットワークについて最低限の知識を抑えるのにはおすすめだと思います

## REST
**[Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)](https://www.amazon.co.jp/dp/4774142042)**
API設計で必要な考え方の基本が抑えられます。

## テスト
**[テスト駆動開発](https://www.amazon.co.jp/dp/4274217884)**
この本読んでからテストを書かないと気持ち悪くなりました。テスタブルなコードを意識すると、自然とコードがきれいに分割されていく気がするので早いうちに読んでおいて正解だったなと思います。

## 開発プロセス
**[LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する (impress top gear)](https://www.amazon.co.jp/dp/4295004901)**
**[アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法](https://www.amazon.co.jp/dp/4839924023)**
**[SCRUM BOOT CAMP THE BOOK【増補改訂版】 スクラムチームではじめるアジャイル開発](https://www.amazon.co.jp/dp/4798163686)**

チーム開発をより効率的に進めるために、DevOpsやアジャイル開発に関するインプットもしました。

## チーム作り
**[エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング](https://www.amazon.co.jp/dp/4774196053)**
**[カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで](https://www.amazon.co.jp/dp/4798153346)**
**[How Google Works(ハウ・グーグル・ワークス) 私たちの働き方とマネジメント](https://www.amazon.co.jp/dp/4532198348)**
**[Team Geek ―Googleのギークたちはいかにしてチームを作るのか](https://www.amazon.co.jp/dp/4873116309)**

チームリーダーを任されるということで、改めて開発組織をどう作っていくか、というのを考えるために読みました。

## プロダクトマネジメント
**[プロダクトマネジメントのすべて](https://www.amazon.co.jp/dp/4798166391)**
PMやデザイナーも含め、チームで一つのプロダクトを作るために目線を揃えよう、ということでチームみんなで読みました。とてもよかった。




# おわりに
こうやって見てみると、改めてとりあえず広く基本を抑えた感じでやってきたなと思いました。
来年は求められる役回り的にも、もう少しDBの深いところやミドルウェア関連の知識とかもつけていきたいなと思っています。

またここにはわざわざ書いてないですが、各種公式ドキュメントには大変お世話になりました。
↓の記事にも書きましたが、日々色々とググる中でちゃんと公式に立ち戻ってインプットしていたことがとても良かったなと思います。

https://qiita.com/ipeblb/items/a71270366cd2dd4937eb