お久しぶりです。YUUKIです。
今年の3月に専業アフィリエイターからWebエンジニアに転職し、はや半年が経ちました。
この半年で去年1年間に匹敵するぐらいの濃密な時間を過ごせてますし、とても充実した日々を送っています。転職して本当に良かったです。
さて今回は、未経験からWebエンジニアになって感じた転職前と転職後のエンジニアという職業に対するギャップや、会社でどのような業務を行ってきたか、入社前に勉強しておけば良かったことをまとめていきます。
転職して驚いたこと
私が転職したのは主にOSSを利用したシステム開発を行っているベンチャー企業で、WebだけでなくOSやDBなどインフラ周りの設計/構築も行っており、上流から下流まで幅広い仕事があります。
その中で、私が最初に携わった業務はWebのCRM(顧客情報を管理するシステム)開発で、入社初日の午前中に環境構築を行い、終わって早々にプロジェクト会議に参加し、コーディングと、まさにWebエンジニアと言える仕事を初日から任せてもらえたんですね。
入社初日にプロジェクトが決まるスピード感には驚きですが、私が何より驚いたのは働き方の自由さ。
私自身、会社で働くという経験は初めてで入社前はさぞお堅いんだろうなとビビりまくっていましたが、実際に働いてみると就業中にコンビニ行けるし、昼休みは連絡すればズラせるし、私服勤務OKだし、想像以上に自由に働ける環境で感動しましたね。
ただその分求められるレベルも高く、勉強し続けなければいけない環境でもあります。
私の経験で言うと、最初に任されたWebCRM開発では言語はPHP、フレームワークはLaravel、ソース管理はGit(SourceTree使用)でしたが、これまでProgateとRailsチュートリアル、基本情報技術者の勉強、2つのポートフォリオ制作レベルの自分のスキルではついていけない場面が多く、最初の3ヶ月間は終業後に毎日勉強してました。
特に現場で一番困ったのは専門用語の理解です。
IT用語に関してそれなりに勉強してきたつもりではありましたが、リアルタイムで飛び交うIT用語、膨大な仕様書に書いてある内容が理解できず、上司に質問をし続ける日々が続きました。
プログラマーとしての業務では、コードの量が膨大なことにも驚きました。
個人開発ではTwitterアプリを作るにも一ファイル数十行、多くても百行程度ですが、私が担当したWebCRMのコード量は一ファイル数百〜数千行が当たり前。さらにページ数は1000以上で、一つ一つの処理を追うのが大変すぎて毎日頭痛が止まりませんでした。
自分の場合は途中からプロジェクトにアサインしたのもあり、既に出来上がっているコードの意味を理解してかつ仕様に沿って開発する必要があった為、より大変でした。
自分1人で一からコードを書いていれば後で見返してもすぐ思い出せますが、他人の書いたコードを読んで理解した上でコードを書くのは、一見楽そうに見えて1から作業するより大変です。
また、当然ですがプロが書くコードは素人とはレベルが違います。
例えばIf〜Elseの条件分岐では当たり前のように三項演算子が使われていたり、共通化処理は徹底して関数化されていたりと、自分が今まで書いてきたコードとはあまりにレベルが違いました。
技術部分に関しても当然のようにAjax通信が使われていたり、データはDBから直接取ってくるのではなくAPIが使われていたりと、新技術がふんだんに取り入られていました。
このように、最初に携わったプロジェクトで圧倒的な実力差を痛感しましたね。
入社から半年。現在まで携わってきた業務
先程話したWebCRM開発を2ヶ月ほどで終えて、次に待っていたのはレガシーな言語を使った検索機能の改修。
今まで自分が勉強した内容とはあまりに掛け離れていたのと、環境構築が大変で一番苦戦したプロジェクトでもあります。これについては話したくない・・・笑
それから3ヶ月ほど、上記プロジェクトと並行して、5件ほど0.1〜0.5人月程度のタスクを任されました。
|
上記タスクはいずれも個人プレーだったのでやりやすく、場数を踏めたのでとても勉強になりました。
受託の開発では仕様把握→コーディング→テスト項目書作成→テスト実施の流れを経験できたのもあって、この頃からプログラマーとしての仕事内容を理解してきた気がします。
また、これはエンジニアとしての仕事ではありませんが隙間時間に会社のマーケ周りも担当させてもらいました。(もくもく会主催や自社ブログのレビュー、ページ構成の発案など)
そしてついこの間、中規模開発のプロジェクトメンバーにアサインされ、おそらく半年〜1年程度のスパンで続くだろうと見込みがあります。
入社後から現在まで、仕事内容をまとめると以下ですね。
言語はPHP/JSがメインです。
入社〜現在までの仕事内容まとめ
プロジェクト/タスク | 期間 |
大規模WebCRM開発 | 3月〜5月 |
WebCRM検索機能の改修 | 5月〜8月 |
業務アプリケーション開発 | 8月〜 |
CRM管理画面の改修 | 5月 |
ECサイトの改修 | 6月 |
自社Webの改修 | 7月 |
AWS Lambda開発 | 9月 |
業務ツール作成 | 9月 |
ブログレビュー | 4月〜 |
もくもく会主催 | 4月〜 |
入社前にやっておけばよかった勉強について
未経験からエンジニア転職を目指す人にありがちなのが、プログラミングのみ学ぼうとすることです。
|
もちろん上記は大事ですが、今私が入社前の勉強期間に戻ったら、追加して下記を意識すると思います。
|
僕自身、入社前はプログラミングの勉強とIT用語の勉強ぐらいしかしていなかったのですが、現場で働いてみてからは、プログラミングの知識量よりも上記スキルの方が重要だと感じました。
上記は日頃から癖を付けておかないと身体に染みついてこないので、独学で学習している方は日頃から意識して実践するのをお勧めします。プログラマー志望であれば上記は必須です。
そして、上記を学ぶに当たって最も効率的なのはチーム開発を経験することだと思います。
1人で学ぶのは自由です。コーディング規約もGit Flowも考える必要がありません。
ただ会社で働くとなると、メンバーのコードを見たり、納品後のコードを改修したり、コードレビューをもらったりする必要も出てきます。そうなると、やはりコーディング規約が守られていないと可読性が下がったり、適切なGitの使い方をしていないと冗長化にも繋がります。
ですので、未経験からエンジニアに転職するなら、一緒に勉強出来る仲間を見つけて一度チーム開発を経験しておきましょう。
これを行っておくことで、入社後に爆速スタート切ることが出来ると思います。
最近ならプログラミングスクール に通えば、どのスクールのカリキュラムにもチーム開発は必ずといって組み込まれているので、思い切って通うのもアリだと思います。特に、スクールであれば入会料を払ってまでエンジニアになりたいというモチベーションの高い人が多いので、よりオススメです。
個人的にオススメのスクールはポテパンキャンプ
かTECH::EXPERT
です。
なぜなら、もくもく会でお会いする未経験からエンジニア転職に成功した人の殆どが上記スクール出身だったからです。
エンジニアの仕事は難易度が高いが慣れると楽しい
正直エンジニアの仕事は大変です。楽だと思うシーンは殆どないですね。
(体力的には楽かもしれないが)
ただ、IT企業は比較的自由な働き方が出来る傾向にありますし、合理的な考えを持つ人が多い為か無駄な会議や飲み会は全くありません。その点、成果のみを重視し無駄なことに時間を割きたくない人には向いている職種と言えるでしょう。
自分の場合は元々一つのことに没頭できる性格だったこともあって、開発、特にコーディングに関しては気付いたら夜が空けているぐらい楽しめているので、エンジニアになって良かったなと。
まだ知らないことも多くスキルが足りてないので、後はスキルを向上させて難易度の高い業務もこなせるようになれば、天職なのではと思っています。