どうも、えんつかです!
30代突入してからジョブチェンジして、2020年2月に自社開発企業に入社して早くも2ヶ月が経過しました。どんな業務に取り組んでいるのか、これからどんな知識が必要そうか、どんなことを業務から学んでいるのか、綴っていこうと思います。
これからWEBエンジニアを目指す方の参考になれば幸いです!
【2ヶ月目】WEBエンジニア転職後の経過報告
まず軽く自己紹介ですが、WEBエンジニアへ転職できるまではプログラミングを独学してて主にPHPをメインに学んでいました。
学習履歴やどんな感じで勧めてきたかはnoteにまとめましたので、気になる方は参考にして下さい。
職場環境について
2020年2月に晴れて自社開発企業にジョインすることができました。
どんな企業かざっくり説明すると、
- 設立3年のSaaSスタートアップ
- 従業員は約30名
- エンジニアは8名。委託契約のエンジニアは他に数名
- サービスは1→10への成長フェーズ
- フルリモート可、フレックス勤務、MacBook+サブディスプレイ、就業中は音楽流れる
こんな感じです。
こんな環境に身を置いて働けるのは本当にありがたい!1年前では想像もできませんでしたね。
私が業務で担当している内容は、主にバックエンド側でCMSの新規機能・機能改修です。技術としては、PHPがメインになります。FWはCakePHP。たまにフロントエンドにも取り組めピュアなJavaScriptも触る感じですね。
サービスにはVue.jsを用いたり、インフラにはAWS、CI/CDにCircleCIを導入、バージョン管理にGitHub。
社内ツールとしてSlackやBacklogなどなどを用いています。
隣にいるのにSlackで連絡取り合うこともあり、噂で聞いていましたが少し驚きました。
また自社開発企業と言うこともあり、納期設定は柔軟でじっくり開発に取り組める環境だと感じています。
ということで、簡単にまとめると
職場環境としては超最新というわけでは無いですが、比較的モダンな印象です。
私が取り組んでいるCakePHPは少し古いかもしれません。ですが、実際書いているとLaravelとそこまで違うって感じでも無いですし、それよりも純粋なPHPの知識が必要ということで、めちゃくちゃ勉強になってます。
トータル、結構恵まれた環境で働かさせて頂いているなぁと思っています。
入社してからの業務内容について少し詳しく
〜入社直後〜
まずは環境構築からですが、環境構築がわからなさ過ぎて時間がかかりました。職場の開発環境が普通かはわからないのですが、ざっくりお伝えするとAWS上に開発環境がそれぞれ割り振られていて、開発はそこにデプロイして進める感じです。この準備をするのにAWS触ってて良かったと思いました。SSHログインとか、Linux操作が多少わかっていないと正直キツかったですね。
また配属直後はちょうど良いタスクがたまたま無かったということで、このタイミングで少しCakePHPを学習させて頂きました。
ググってもLaravelよりも情報が少ないですし、バージョンで書き方や参考書があてにならない場面もあって少し辛く、早速CakePHPにやられました。
〜業務内容〜
タスクの内容は主にCMSの新規機能・機能改修ですが、入社直後のペーペーがいきなりゼロベースの新規開発をするわけではなく、ある程度形になっていたり、以前よりあったものを利用できる様にする業務が多い印象です。
冷静に考えればそりゃそうですよね。未経験にいきなりサービス開発させることは早々無いと思います。逆にそういった環境に入ることができると色々経験できそうで、良いですね。
タスクをこなすには、内容に寄りけりで、超ざっくりですが最低限頭に入っている必要があることは以下の様に感じました。
- HTML/CSSが理解でき実装できる
- PHPの基礎構文が理解でき実装できる
- JavaScriptの基礎構文が理解でき実装できる
- FWのコーディング規約(命名規則やどんなメソッド利用)が分かる
- 書いてあるコードが何をしようとしているかざっくり読める
- データベース操作ができる
- GitHubの利用方法
そうゆう意味では、転職活動する為のロードマップとしてHTML/CSS学んで、PHP学んで、FW学んでポートフォリオ作成してなどなどの理由がよく分かりました!これらはとても役に立ちましたし、ポートフォリオ作成途中で培った知識は、結構実務よりな所も散見されました。
あと、CSSをいじるのにサイト模写も地味に役立ってます!
ただ、今まで独学で完全個人開発だったので、チーム開発を意識する必要がありました。この辺りはWEBエンジニアとしてのお作法だと思ってて、実務経験とはこういった所かなと思ってます。この辺りも業務中に学んでいる印象が強いです。
- タスクへの取り組み方
- GitHub利用ルール(WIP、コミット、プルリクエスト、マージ)
- コーディングルール
色々なタスクがあるので、どのタスクに取り組んでて、進捗中なのか明確にしたり、それを管理する為にGitHub上でコミット履歴を整理したり、などなどといった具合です。最初はわからずめちゃくちゃ苦労しました笑。
様々なエンジニアが関わってくるので、コードの「保守性」や「可読性」なども考慮したりする必要も出てきました。これは業務に入らないと経験できないと思いました。
また、それを行う為には、深くPHPについて知らなければいけないといった感じです。
独学時は、できればシングルクォーテーションの方が好ましいなんて意識したことありませんでした。
タスクは、経験したこと無い内容にも触れる機会があります。
その時は、自分で調べて実装することになるので、自分の知識の幅が広がる良い経験になりますね。最近だと正規表現周りの実装したりしてました。
ただ業務中は、悲しいくらい私の処理スピードが遅い!どんどんタスクをこなせる様に徐々にベース力を底上げしないといけないですね。
2ヶ月で学んだこと
概ね以下の通りですね。
- 開発フロー
- Git/GitHub周り
- コードを紐解く力
- 好ましいコーディング手法
- PHP/CakePHPの更なる理解
- JavaScriptの更なる理解
- Linuxについて
- TCP/IP周り
- AWSサービス概要
転職前の私に学んでおいた方が良い物、伝えたい物があるなら、以下の通りかな
- Linuxについて(コマンド、権限変更 etc..)
- Gitについて(reset, reflog, cherry-pick, stash etc…)
- Sourcetreeの利用方法
- コードレビューのある環境の方が絶対良い
この辺りを知っておくと実務に入ってすぐに活用することができるのでオススメですね。やっぱりできれば手を動かす感じで。
そしてコードレビューの文化がある企業の方が絶対良いです。
コードレビューは、自分の実装に対して第三者の視点から意見を貰えるので、振り返りをすることができます。振り返りがないと、何がよくて何が悪いのか判断できないので、成長することができません。
なので、コードレビュー文化のある企業への転職を薦めます。
なお、私もこれからレビューさせていただくことになったのですが、いかんせんレベルが低いので早くレベルアップをしなくてはいけず、ベース底上げが目先の目標ですね。現状、質問しかできない!悲しい!
これからどんな知識が必要と感じたか
結構幅広い基礎知識が必要だと感じてますし、トレンド技術も学びたい欲もあるのですが、まずはベースとなる技術としてPHP、JavaScriptの深堀りをしていこうと思っています。ベース技術がわかってると最新のFWの理解もしやすくなると伺ってるので、急がば回れと言うことで以下書籍で理解を深めていく予定です!
パーフェクトPHP
パーフェクトJavaScript
あと基本的な知識もこちらで補おう、基本情報技術者
その他etc…
またある程度時間が過ぎたらまた書いていきます〜
お楽しみに!