現在エンジニアとしてWebサービスの開発をしているものです。
自分は学生時代は理系ではありましたが情報系の学部ではなくそれらしい勉強も一切してきませんでしたが、20代後半の今はコードを毎日書く仕事をしています。
とはいえ、ここに来るまでに様々な苦労や挫折もありました。
自分がなぜエンジニアを目指そうと思ったのか、もしかしたら5年後や10年後に忘れていたら悲しいので書いて置きたいとおもいます。
また、同じように未経験からIT業界を目指す方、Web業界を目指す方のヒントになれば幸いです。
目次
未経験から社内SEへ
私の最初のキャリアはメーカー系企業のシステム子会社で社内SEとしてスタートしました。
大学時代、理系ではありましたが情報系の学生ではなく、プログラミングはほぼ未経験でした。自宅にパソコンがある家庭だったので、人より少しパソコンと触れる機会が多かった程度でした。
そのため、なんとなくパソコンを得意とするなんでも屋さんみたいな仕事は性に合っているんじゃないかぐらいでかなりふわふわした気持ちで社内SEになりました。
入社し、システムエンジニアの基礎学習開始
ありがたいことに入社して間もなく、数ヶ月の研修がありました。
同期には情報系の学生ばかりだったので、自分のスタートラインが違うことを痛感し、帰宅後も参考書を読む日々が始まりました。このときにプログラミングに限らず広い範囲のIT知識を学びました。
研修が終わり、この会社ではJavaベースの独自フレームワークを使って社内システムの開発を行っており、Web開発は実務を通して学んでいきました。
ここでも、自分は一番の落ちこぼれで生産性が低い日々が続きました。このときも、業務時間だけでは理解が追いつかないこともあったので、SQL,Javaの構文、それ以前のオブジェクト指向周りの学習をしつつ、基本情報の学習もしてと、学生時代より勉強した社会人1年目でした。
社内SE初期に得られたもの
今思えば、ここで周りの支援も受けつつ、IT関連の基礎知識を学ぶことができたのは今のキャリアにも大きく寄与しているように思います。
また、自己学習することの必要性などもここで学んだんだな、と再認識しました。
その後は1年後に基本情報、翌年頃に応用情報を取得して、ようやく基礎レベルの知識をつけられたかな?という領域までくることができました。
IPAの勉強方法などについては、下記の記事をご覧ください。
【IPA】未経験から基本情報&応用情報を合格するための勉強方法とゆるい心構えなぜ社内SEからWeb業界を目指そうと思ったのか?
3年ほど社内SEでの仕事ができるようになってきましたが、入社時のような刺激や学びが減って行くのを感じました。
開発業務ができたのも最初の1年目のみで、そこから人員不足からどんどん上流工程の仕事やマネジメント業務を任されるようになっていきました。
正直、上流工程の仕事(設計や要件定義など)やマネジメントはそれなりに楽しかったです。ただ、技術的な話から部署間の調整や人員管理などに頭を使うことを求められるようになり、技術的なことに頭を使う割合がものすごいスピードで離れていくのを感じました。
同時に、自分が入社前に思い描いていたキャリアとズレはじめていると思いました。
この頃に、1度目の転職活動をはじめたのですが、漠然とした不安から動いてしまったため、転職して自分がどうなりたいのかという観点が抜けておりなかなかうまく進みませんでした。
その後、プライベートも忙しくなったこともあり、あまり正常な判断ができていないと感じたので、一度立ち止まって落ち着いてから自分が何をしたいのかを改めて考えました。
転職してどうなりたいのか?
技術を使って誰かの役に立つ仕事がしたい
社内SEの仕事をしていてもっとも楽しかったのは、やっぱり自分が作ったシステムが誰かの役に立ったときでした。ここが自分の核のようなものだと思います。
作るものがたとえ小さなスクリプトだったとしても、目の前の人の困っていることを聞き、それを解決する方法を考えて提案し、実際にそれをつくる、これがすべてできる仕事は他になかなかないと思います。特に、解決策を考えるときこそ、一番ワクワクしていたなぁと気づき、改めて技術を使って誰かの役に立つしごとがしたいと思いました。
本気で「良いプロダクト」をつくってみたい
社内SEは特性上、多くの関係者と仕事をします。
いくつかの部署間だったり、自社のエンジニアだけでなく外部のエンジニアに依頼することもあります。このようにビジョンの違うチームが集まってプロダクトを開発すると、思うように進まないことはよくありました。
その中には、予算の都合、組織や部署間の都合もあって中途半端なシステムだけできあがってしまうことも少なくありませんでした。チーム一丸となって、とは程遠く妥協に妥協を重ねるようなこともありました。
僕は「シンプルに良いものを作りたい」とだけ常に考えてきました。そのため、上記のようなしがらみでプロダクトと本気で向き合えないときはかなりストレスでした。
この経験からも、本気で「良いプロダクト」をつくるためにも、プロダクトそのものが事業とつながっているWeb業界にいってみたいと思うようになりました。
家族との時間を大切にしたい
自分は家族といる時間を大切にしたいと思っています。また、親が自営業ながら自宅で働いていた姿をみていたこともあり、なるべく家族との時間をつくるようにしたいと思っています。
何かあったときに場所にとらわれず柔軟に働けるようになりたい、という想いもありました。
改めて、エンジニアの世界へ
これらを深堀りしていった結果、20代のうちに改めて技術者(エンジニア)としてのキャリアを積みたい、そして技術を使って人の役に立つ仕事をしたいことから、それが叶えられそうなWeb関連の事業をしている企業のエンジニアになることを目標に設定しました。
エンジニア(技術職)として働くために準備したこと
とはいえ、社内SEで得たスキルだけではエンジニアとして働くにはスキル不足だと感じました。
自分が雇うとしたら、本気でエンジニアやりたいならもう少し実務経験を積んでいるか、積んでいないならいないなりに学習していけそうか、をみるだろうと思いました。
そのため、転職後に開発できることを示すためにポートフォリオ(webアプリ)の作成とGitHubのソースコードを公開してみることにしました。
3ヶ月でのWebアプリ作成
目標が定まってからは、3ヶ月ほどかけてRuby(Rails)の勉強をしながらWebアプリの開発をすることにしました。
仕事をしながらだったので、仕事が終わってから、土日にガッツリ時間をかけて下記のようなことをやっていました。
- Rubyの勉強
- Railsチュートリアル
- Webアプリの作成(ほぼ大半)
- アプリデプロイ
- 転職活動
最初はgitもわからんレベルでしたが、3ヶ月ぐらいかけてRubyを学び、どうにかWebアプリとして形にしてデプロイし、githubにコードを公開するところまで持っていきました。
このとき、RubyやRailsチュートリアルは1ヶ月程度でほとんどをアプリ作成に時間を費やすようにしました。
元々結局のところは実際に開発ができるのかが重要なので、参考書を事前に読み込むよりも、開発をしながらエラーメッセージをみて、わからないところを調べて実装というサイクルをなるべく多く回すようにしました。
今もこのときの経験は役に立っていて、新しい言語を学ぶ時などは、同じように何か作ってみるようにしています。
Webアプリは完璧を目指さない
正直個人アプリ開発に関しては、やろうと思えば無限に時間を費やせてしまいます。
いままでバリバリ開発している方なら別ですが、今回初めてアプリを作成した場合は、質にこだわり過ぎるよりも、自分で考えて作ったものをアウトプットするというだけでも大きな武器だと思います。
あまりにも誤字だらけ、バグだらけは別ですが、自身を持って紹介するほうが大切かと思います。
転職活動
アプリができたので、職務経歴などを整えてから転職活動を開始しました。
利用した転職エージェント
エージェントはGreenをメインで使いました。
1回目はリクナビなども使っていたのですが選考を急かされたりして自分のペースで進められにくく、自分の性にあいませんでした。
企業のオファーに自分から応えるなどしなければ選考は進まないので、自分のペースでゆるく進められたのもGoodでした。
WantedlyなどのSNSも登録はしており、そこそこ反応はありました。
最終的にはGreenで選考を進めたWeb系の会社でRailsのバックエンドエンジニアと採用が決まり転職活動を終了しました。
【おまけ】勉強に使った書籍や資料
Railsチュートリアル
言わずとしれたRailsのチュートリアルです。
なかなかのボリュームなので全部やるとそれなりに時間がかかります。ただ、gitなど開発に必要な周辺の知識、自動テストコードについても学ぶことができるので非常に良質なコンテンツなのは間違いないと思います。
Ruby on Rails チュートリアル:プロダクト開発の0→1を学ぼう
また、下記の書籍もアプリ作成の際にお世話になりました。特にRspec関連の基礎は結構この本のおかげでした。CapybaraやFactoryBotなども触れていたので、現場でもスムーズにテストコードを書くことができました。
現場で使える Ruby on Rails 5速習実践ガイド | マイナビブックス
リーダブルコード
言わずとしれた名書で、今もたまに読み返してます。
読みやすいコードとは何なのかという命題は、エンジニアである以上考え続ける必要があるので初学者のみならず非常におすすめです。
なぜ読みやすいコード、つまり保守性の高いコードが必要とされるのかは下記の記事でも紹介しております。
保守性の高いコードがなぜ必要とされるのか?そのためにやるべきではないことJavaScript本格入門
正直これは入社前はあまり触らなかったのですが、入社後に一番呼んだ書籍かもしれません。
改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで:書籍案内|技術評論社
実際に実務する中で、もっとJSの勉強しておけばよかったと思うことは多々ありました。
jQueryを書くことは雰囲気でできましたが、モダンなJS(ES6)などは、昔の参考書には全然載っていないような記法がたくさんありました。Vue.jsやReactを触る際もモダンJSがわかっていないとかけないことも多いので、ある程度勉強しておくのはおすすめです。
また、知らいない構文をサクッと調べたいときは下記のサイトにお世話になっています。(大体上位に出てきてくれますが)
MacBook Pro購入
資料でもなんでもないですがMacBookProを買いました。
会社で使うのがMacBookなので慣れておきたかった、ターミナルで操作することが多くMacの方が使い勝手が良い、という建前もありますが、テンションが上がるのが一番大きな理由です。
ただ、最近のWindowsはWSLが非常に優秀らしいのでぶっちゃけMacBook買え、とは思います。Windowsでも十分良いと思っています。
MacBookを買ったことは満足していますが、キーボードをJISにしたのが一番の失敗でした。次は絶対USにしようと思います。(外付けキーボード使っていますがたまに打つとアホみたいにタイポするので)
まとめ
エンジニアを目指す方がここ最近も増えてきているように思いますが、挫折してしまう人も多く見てきました。
少しでもヒントになれば幸いです。