Laravel・PHP入門

PHPer初心者

【まとめ】25歳の文系女子が未経験からエンジニアになった話

エンジニアになることが決まり、また実際にエンジニアになった後も
この辺りの質問をいただくことが非常に多いため
今回ブログにまとめることにしました。

・なぜエンジニアになったのか
・エンジニアになるまでに何をしたのか
・実際エンジニアになってみてどうだったか


未経験でエンジニアになりたいけど何をすればいいかわからない人の
一助になれば幸いです。

自己紹介

2015年4月〜2016年9月(新卒) 文系の大卒、大手で販売職
〜2017年10月(転職) IT専門のキャリアアドバイザー
〜今 エンジニアになる(約2ヶ月)
経歴としてはこんな感じです。

スクールには通わず、
平均でいうと月80時間くらい残業をしながら
下記内容を実施しています。

スクールに通わず未経験で色々実施できたのは、

・エンジニアが周りに多かった
・そもそもIT専門のキャリアアドバイザーなので
 未経験の市場感なども認識していた
・運が良かった

今となっては本当に恵まれた環境でした。。。
周りに感謝しかない。


身バレを恐れず今回は赤裸々に語ります。

なぜエンジニアになったのか

OSSという文化に感動したから

8割これに尽きます。
今まで販売・営業と経験してきて、この文化には本当に驚きました。
目的幅広いですが、世界が、競争や損得だけでなく、皆で前に進んでいる姿が大好きです。

なれると思ったから

実は、今年の6月くらいまではなんとなくなりたいなあ、
というイメージで勉強を続けていました。
ですが、エンジニアになることを決断するきっかけがありました。

知人エンジニアのこんな会話でした

「エンジニアにならないの?」
「なりたいとは思うけど、なれるのかな、とも思う」
え、なれるよ
「だって俺がエンジニアになったの25歳だし」
「同い年だし」
なれる

ああ、そうか、なれるのか。私エンジニアになれるんだ。
断言されてはじめて、小心者の私はなることを決断できたのです。
我ながら情けない話です。でもこの時に背中を押してくれたのはこの断言です。

「じゃあ、なるためには今から何をしようか」

こうして、
「エンジニアになりたい」
→「なれる」
→「なるためにはどうすればいいか」
という発想へ変わります。

エンジニアになるために何をしたのか

時系列で追います。(期間は目安)

社内エンジニアの勉強会に参加して環境構築(2017年1月〜3月)

エンジニアの方が非エンジニア向けに
Railsで簡単なブログを作る
勉強会を週1で開催してくださっていました。
まだエンジニアになれると思ってなかった頃です。

先生が書いたコードをそのまま写経するというものでしたが、
rails new blogで全部ファイルが勝手にできる姿を見た時には
本当に驚いたことを覚えています。

【やったこと】2ヶ月週1:1時間(写経)

MVCCRUDの簡単な理解
AWSでサーバ借りる
WindowsTeraTermから接続
Ruby/Rails/Apache/MySQLも入れて環境構築
・ 簡単なテーブル作成
・ Postしたデータを表示するところまで

このときは、実際に考えたというよりは完全に写経だったので
エンジニアってこんなことしてるんだレベルの理解でした。
同じことをして、と言われてもできなかった。

諸事情から一度勉強会が頓挫します。

社内エンジニアに課題をもらう(3月〜4月)

エンジニアになりたいと漠然と思い始めていました。
ですがこのときはまだ覚悟はできていませんでした。
なんとなくなりたいなあ、くらい。

同先生に依頼し、個別で勉強会の相談時間をいただきます。
1週間に1回時間をいただき、もらった課題を実施してくる
というような流れでした。

【やったこと】1ヶ月週2:平均4時間前後(自力+質問/試行)

・自力でVagrant + VirtualBoxを利用し開発環境の構築
(CentOS7/Laravel/Apache/MySQL/PHP)
・正規化を意識したテーブル・カラムの作成
・Postを投稿したら、それが表示される
・URLに/show/1と入力した時にid=1のpostデータが表示される

主にこの辺り実施しました。
ここで初めて、写経じゃなくて自分で調べる・考える
というところに近づきます。

ドットインストールやUdemyで写経する(5月〜6月中盤)

諸事情により(笑)この辺りから独学の比重が増えます。
独学でできることをやろうと考えてました。

【やったこと】1ヶ月週2:4時間(動画学習による独学)

・PaizaのPHPRubyの基礎一通り
・ドットインストールみて環境構築
・UdemyみてPythonニューラルネットワーク作る

正直独学だと迷走するので(笑)何をやるかは相談すべきだった。
逆に全く知らなかったPythonとかにも手を出した。
何もわかってない時に写経の幅を広げたところで
なるほど〜動いた〜にはなるけど、その先は足りなかった。
未経験の時は裾を広げすぎるべからず。

qiita.com

この記事にもありますね。

社外エンジニアに課題をもらう(6月後半〜7月)

そのように少し停滞していましたが、転機が訪れます。
自分が支援したエンジニアさんと仲良くなり
仕事としてエンジニアになることを決断します。
(なぜエンジニアになったのか、の会話に出てきたエンジニアさんです)

中期目標・短期目標の設定をする
その目標達成のための課題にアドバイスしてくれることに。

【やったこと】2ヶ月週3,4:平均20時間程度

(動画学習:写経→課題:自分で考える)
・環境構築:さくらのVPS+CentOS7+Rails4系+Ruby2.3系
・ドットインストールでToDo管理アプリ(上と同じ環境)
・ToDo管理アプリの機能拡張
APIの拡張
①itemの新規作成・表示・削除・更新
②itemをidではなく名前やpriceなどで検索できるAPI作成
③itemにカテゴリをつける
④カテゴリにひもづくitemsを取得するAPI作成
⑤itemをカテゴリに紐づかせて新規作成するAPI
⑥.itemのカテゴリのみ変更するAPI

▼認証
1.認証機能(新規登録・ログイン)を作る
2.作った認証機能を元に各ユーザーにトークンを付与する
3.正規のトークンを持っている人だけ上記で作ったAPIを利用できるようにする

JavaScript
1.JavaScriptAjaxを使って、上記で作ったAPIを利用してみる
2.帰ってきたJsonを元にJavaScriptでHTMLを作成し表示させる

このようにして、土日ひたすらいただいた課題を実施して行くことに。
ここにきて初めて、
自分が今まで実施してきたことがほとんど写経であり
「自分で考えて理解・実装」ができていなかったことに気づきます。
2ヶ月間これらを実施することで
自分で考えることの難しさと面白さを知り、
エンジニアになるということが現実味を増します。

エンジニアインターンや選考を経験する(8月〜10月)

さて、次のフェーズはどうすれば
「職業:エンジニア」になれるかでした。
結論から申し上げますと、
「より実務に近い経験を積むこと」
「未経験採用」を前提としている環境を選択肢に入れること
ここから、無給インターンにチャレンジすることにします。

というのも、通常の第二新卒なら転職で何ら問題ありません、
私には1点問題があったのです。
ジョブホッパー」という日本の転職市場において大きく関わるレッテルです。
1年半で前職を退職し、今回も約1年で職種変更に乗り切ろうとしていました。
教育投資してもすぐに職種変更や転職されるのであれば
企業が採用・教育する理由がありません。
お恥ずかしい話ながら、私はエンジニアという職種を理解するまで、自分のやりたい仕事をみつけられていなかったのです、、、

教育・採用コストを減らす・差別化するを目的に
無給インターンを選びました。

ありがたいことに、
インターンについては嬉しいお話をいただくこともあり
下記内容を実施しました。

【やったこと】2ヶ月週2〜4:20時間程度

インターンなど選考(選考課題含む)
Rubyの基礎(配列やハッシュなど全くわかってなかった)
・html、CSS、JSの基礎
・(並行して課題)

機密事項は話せませんが、すごく勉強になりました。

※ 勿論全てうまく行っていた訳ではなく
書類不合格だったり、
人事か営業なら内定を出すが
エンジニアとしては不合格、
の結果もありました。

エンジニアになった

結果として、
あるご縁をいただき11月からエンジニアになりました。
もうここまでお世話になり尽くした人に感謝しかできません。

とにかくいただいた投資に対して、自分ができることで
お返ししていくつもりです。

なるまでに必要だったと思うこと

自分の活動などこれまでの経緯を通して、
大事かなと思うポイントまとめ。

エンジニアになる覚悟と好奇心

これがないと続かないし行動できません。

とりあえず行動すること

やりたい〜やれない〜
→本当にやりたいなら何かやりましょう

全力で教わること

教えてもらった時には礼儀として全力で応えるべき。
相手の時間をもらう分、課題は上回るくらい実施すれば
きっと次の課題をもらえるはずです。
あと気を遣いすぎて質問しなくてできない・やれない人もそこで止まる
課題をもらったからにはやる、できないなら聞くまでするべきです。

適切な時期に、適切な課題を実施すること

これが意外と大事だなと思いました。
ブラウザって何?環境??という人に
ブログでログイン機能作ろう〜と言っても、きっと挫折します。

ポテンシャルを評価対象に載せること

(裏話)未経験エンジニアってドットインストールや本、チュートリアル
スクールに通って、1つ何かを作る、まではできる人が多いです。
同じコードだから差がわからない=お見送りに繋がりやすいです。

企業に書類を提出した時に企業はどう見えるか?
ドットインストールレベルだなあ」これです。これに尽きてしまうのです。
実務のコーディングは性格が全く違う
だからどう考えていて、どんなポテンシャルあるか知りたい。

なので、プロセスを、もしくは他人と違う形でアウトプットしてください。
・なぜこのアプリを作ったのか
・いつ何をどう考えたのかなぜそうしたのか
・自分で考えて作ってみる
この辺りは本当に意識したほうが良いと思います。

企業は学校ではなくビジネスであること

これもめちゃくちゃ大事だなと思いました。
自分がエンジニア採用される場合、月25万、
おそらく3ヶ月〜半年はほとんど稼げないことを自覚して
自分を採用するメリットがどこにあるのか考えたほうがいい。

実際なってみてどうだったか

最後に、実際にエンジニアになって2ヶ月たったので
感想まとめ。
(ただし今の環境が死ぬほど良いので、
他の環境だとまた感想が変わってくると思います)

楽しすぎる

驚くぐらい楽しいです。週7で20時間ずっとエンジニアリングしていたいくらいです。

どうすれば期待通り動くか問題を解くのが楽しい

これは性格もありますが、少し難しい問題があってそれが解けた瞬間すごく楽しい。笑
この機能作りたいな、どうすれば作れるんだろう、作ってみる、作れた、楽しい!の繰り返し
逆に課題もらって解けた時に楽しくない人はエンジニアやめたほうがいいです。

コードレビューもらえるのが楽しい

こうやって書けばいいんだ、何これこんな書き方あるんだ、も楽しい。
なぜその指摘が入るのか、想像して、あってるか先輩に確認すると
想定通りだったり、全く想定外でそんなこと考えてるんですか!?って
なったりするのが楽しいです。

エンジニア文化にひたすら感動する

少しずつ学んでいくうちに、なぜそのFWがどんな思想に基づいて作られているのか
というところまで辿り着きます。
postd.cc

例えばRails(Ruby)の基本理念の
プログラマの幸福度を最適化する」
そんなことを考えて世界がソースコードを作るなんて
文化ってすごすぎませんか、アガペーすら感じます

未経験での学習と実務は全然違う

数ヶ月学習した内容は実務の1〜2週間で終わりました。。。

1日12時間集中して1週間連続で勉強できる、
そして先輩に聞けるという環境は驚くほど好環境です。
あれほど進まなかった、わからなかったものがどんどん進むと
数ヶ月に渡って実施してきたことが1、2週間で
あれ?こんなのに迷ってたの?というレベルになります。

コードの書き方が全く違う

当たり前ですが実務→保守が発生します。
保守性の高いコードを、規約に則ったコードを、
などルールや制限が増え、ベストプラクティスを考えるようになります。
これがまた難しくて面白いのです。

業務に関わるインプットは増える、それ以外のインプットは増えない

例えば私の場合、Laravelについて、PHPについてのインプットはかなり増えました。
当然ですが、業務で一切触れないものについては自分で収集するほかありません。
逆に言えば、業務で触れられる技術が古ければ、
新しいものは自分でキャッチアップするほかない。想像以上でした!

集中力が50分に1回くらい切れる

これは衝撃です。1時間に1回くらい、ばちん、と切れるのです。
(人により差があると思いますが)
切れるのは仕方ないとして、集中力を戻す時に時間がかかる、
いい方法あったら教えてください。

そのほか

・めっちゃお腹すく
・会話が減る(笑)
・運動が減る
・そして当然のごとく太る

ああ、だからエンジニアは筋トレをするのか、が最近の結論です。
個人的マイブームは腹筋です。


2017年が終わる前に、まとめておきたかったのでまとめました。
まだ2ヶ月しか経っていないので、また1年たったあたりで記事書きたいなと思います。
今は本当に、とにかくエンジニアになってよかったです。幸せです。
エンジニアになりたい人は、是非、チャレンジしてみてください。

最後に、自分がエンジニアになるにあたり関わってくださった皆様に
心の底から感謝申し上げます。