未経験からエンジニア転職をするまでにやったこと

# 初めに
私は4年美容師として従事したのち、未経験からエンジニア転職をしました。
現在は主にフロント側の開発を行っています。

転職にするにあたって、色々と準備してから臨みました。
その過程で得た知識や技術は今になって活きる場面も多く、これから未経験からでもエンジニアに挑戦してみたい、
そんな思いがある人の一つの参考になれば幸いです。
ただ、今すぐエンジニア転職したい、という人には向かない内容かもしれません。

まず初めに言えることは、「**基礎**」を大事にしましょう、ということです。

# 学習スタート（タイピング練習）
これはエンジニアとしては基礎中の基礎。そもそもこれが出来ないと効率の良い仕事はできない要素があります。

それは**タイピングの速さ**です。
コードを書くのはもちろんですが、質問や相談する際のタイピングの速さは仕事のスピードに影響してきます。

極論ですが、3時間かけてコードを書く人に比べ、二倍タイピングが早い人が書けば1時間半で仕事を終えられることになります。
（コードなんてほぼ書かないよ、調べてコピペやろ、みたいな指摘は無しでお願いします）

## ホームポジションを覚える
私はまず、この[ベネッセ](https://manabi-gakushu.benesse.ne.jp/gakushu/typing/homeposition.html)のタイピング練習をしました。
ホームポジションを覚え、タッチタイピングができる状態にします。


## タイピングスピードを上げる
次に、[寿司打](https://sushida.net/play.html)をとにかくやってスピードを上げました。
正確重視で高級寿司クリアができれば充分です。
最初はお手軽コースすらクリアできませんでしたが、最終的には高級寿司までクリアできたので、誰でもこのレベルまで上げられると思います。

私の場合は一日に3~4時間やって、大体2週間くらいで出来ました。
ただ、一ヶ月くらいゆっくりやっても良いかとは思います。

# 基礎概念を学習する
インターネットってどうやって繋がってますか？セキュリティって何だろう？
メールってどういう仕組みで送られてるんだろう？

ちゃんと理解してる人はそう居ないと思います。
この基礎概念を理解することでシステム設計で困ることはないんじゃないかと。
（まだその工程は未経験ですが。いつか絶対役立つと信じてます）
ただ、プログラム実装する上でバックグラウンドでどう動いてるのかを知ってるだけでも、実装内容に対しての理解は早いです。

## ネットワークの基本を理解する
まず、ネットの基本であるTCP/IPや基礎知識をこの本で学びました。
インフラエンジニアとしてのキャリアを歩みたい方以外はとりあえずこの一冊を読めばいいと思います。

ただ、正直よく分からんな..と思いながら読んでました。
何となく概念は理解できるけど、ふわっとしている、そんな感覚です。

「これ一冊で身につく ネットワークの基本としくみ」

https://www.amazon.co.jp/dp/4816364951?psc=1&ref=ppx_pop_dt_b_product_details


もうちょっと詳しく読んでみたいな..という方はこちらの書籍も読んでも良いかも。
私はこれで結構理解深まりました。（3割くらい）

「図解入門TCP/IP 仕組み・動作が見てわかる」

https://www.amazon.co.jp/gp/product/4815604975/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1


# Linuxを学ぶ
憧れの黒い画面です。エンジニアといったらこれですよね。
なぜLinuxを学ぶのかというと、個人開発を始めていく手前の「環境構築」で挫折する人が多いからですね。
基本的なコマンドが分かってないと、絶対挫折します。私は挫折しかけました。

また、業務でよく使うコマンドが分かってないと、現場に入った時のキャッチアップ量がとんでもない量になるんじゃないかと思います。

私はとりあえずこの本を読みました。なるべくハンズオンまでできると良いですね。
無料でインストールできますよ。


https://linuc.org/textbooks/linux/

Linuxの環境構築とかよく分からん、インストールできないよ..
なんて方がいるのなら、以下のサービスがおすすめです。
無料でプレイできますが、ある程度お金払って有料コンテンツをやってもいいくらい
かなり有益なサービスだと思います。

https://envader.plus/

# プログラミングを学ぶ
やっとプログラミングまで来ましたね。
ここから書籍、ハンズオンを繰り返しながら楽しめるフェーズです。

## プログラミング思考を鍛える

私はこの本を読んで、プログラミング思考を鍛えてました。
ドリル形式で問題が出るので、サクサク解いてくのが中々面白かったです。
PCは必要ないので、隙間時間にちょっと解いてみるのも良いかもしれないですね。

「日本でいちばんわかりやすいプログラミングのドリル」

https://www.amazon.co.jp/gp/product/4820726420/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1

## プログラミング言語を学ぶ
初心者はとりあえず流行っていて、一番初心者に優しい言語にすると良いかと思います。

おすすめは、**PHPか、Python**ですね。

私の場合は最初はPythonでやってました。なぜなら参考にしていたサイトでPythonをおすすめしていたからです...。
結局今現在Pythonは使わず、PHPはよく使うのですがどっちを学んでも良いと思います。
構文の違いはあるにせよ、しっかり一つの言語を学習していれば何となくやれちゃいます。

### 学習法
やり方は色々あると思います。
Progateでハンズオン中心でやるもよし、書籍を読むもよし。

私は以下の本を読みつつ、ハンズオン(Progate)で進めていました。
スッキリわかる入門シリーズはとてもわかりやすいのでお勧めです。

「スッキリわかるPython入門 (スッキリわかる入門シリーズ) 」

https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BPython%E5%85%A5%E9%96%80-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%9B%BD%E6%9C%AC%E5%A4%A7%E6%82%9F/dp/4295006327/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=F7BOQZA3B42Y&keywords=%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8Bpython&qid=1701930254&sprefix=%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8B+python%2Caps%2C209&sr=8-1

## todoアプリを作る
一番簡単に作れる、todoアプリを作成しました。
この際はフレームワークを使ってます。
PHPならLaravel、PythonならDjangoですね。
ここは特に書籍などは用意せず、調べつつ実装してみるのが良いと思います。
「Laravelでtodoアプリを作成」みたいなワードで検索して見てください。いっぱい出てきますよ。
それか、Udemyで動画を買って、見ながら作るのでも良いです。

全部調べながら作れたのなら、天才です。すごいです。私は動画を見ながら作りました。

# Webの基礎を学ぶ
次に、Webの基礎を学びました。

- HTTP
- Webアプリケーションの歴史
- セキュリティの確保の仕方
- そもそもWebアプリケーションって何

HTTPメソッドを全部言えますか？
Webはどうやって構成されてますか？
Web三層構造って知ってますか？

この辺を知っておくことで、インフラ図を見た時に混乱はしないんじゃないかと思います。

この本がお勧めです

「プロになるためのWeb技術入門」

https://www.amazon.co.jp/%E3%80%8C%E3%83%97%E3%83%AD%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AEWeb%E6%8A%80%E8%A1%93%E5%85%A5%E9%96%80%E3%80%8D-%E2%80%95%E2%80%95%E3%81%AA%E3%81%9C%E3%80%81%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AFWeb%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%92%E9%96%8B%E7%99%BA%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B-%E5%B0%8F%E6%A3%AE-%E8%A3%95%E4%BB%8B/dp/4774142352/ref=sr_1_3_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=MXCTX48WIW3F&keywords=Web&qid=1701931654&sprefix=web%2Caps%2C173&sr=8-3-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1


# 共同での開発経験
この開発経験を持っておくことで、未経験からの転職はしやすいのではないでしょうか。
基本的に、現場での開発は一人ではなくチームを組んだ共同開発になります。

共同開発で、こんな役割をしてました。チームに貢献しました。
この体験談は面接の際、有利に働きます。

共同開発サービスはいくつかあるので、良さげなやつを探すか、未経験も入れるハッカソンを探してみると良いかと思います。

## gitを学ぶ
おそらく、共同開発ではgitで管理すると思います。基本的なgitコマンドは使えるようにしたほうが良いですね。

https://qiita.com/kozzy/items/b42ba59a8bac190a16ab

# 最後に
ここまでしっかり取り組めたのなら、エンジニア一年生を名乗って良いです。
本当に素晴らしいです。誇りましょう。
私は何度か挫折しそうになりましたが、その度に少し休憩を挟みつつ最後までやり遂げられました。
休んでも良いと思います。最後までやり切るのが大事だと思います。

これまでやってきたことをアピールすれば、転職なんて余裕でしょう。
いざ転職！

# おまけ
こんな本も読んでたよ〜

「Webを支える技術」

https://www.amazon.co.jp/gp/product/B07JK7FZH2/ref=ppx_yo_dt_b_d_asin_title_351_o09?ie=UTF8&psc=1
 
「イラスト図解式 この一冊で全部わかるセキュリティの基本」

https://www.amazon.co.jp/gp/product/4797388803/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1