2021年10月17日日曜日

Web系企業にエンジニアとして新卒入社して半年が経った


2021年4月、HR領域でサービスを展開するWeb系のベンチャー企業にWeb開発エンジニア職で新卒入社しました。入社してから執筆時点で半年経ち、これまでに保守や機能実装などのタスクを約10件ほど担当しました。

就活をしていた時は会社に入社した後のことを知りたいと思うことがよくあり、口コミを調べたり面接の時に面接官に聞いたりしていました。

就活生の方向けに、Web系ベンチャー企業のことや社会人になってからの生活・仕事についての情報を少しでも共有できればと思い、今回は自分の入社後のことを含めて就活時に知りたいと思っていたことについて色々書いていこうと思います。少しでも就職活動のお役に立てれば幸いです。

※あくまで自分の会社における内容なので、参考程度に捉えていただければと思います。


■自分の勤める会社について
・業務内容:HR領域における自社サービスの開発・運用業務
・設立:2007年6月
・従業員数:約90名


■入社後の流れ
入社後、最初の2週間は研修がありました。主な内容としては
  • ビジネス研修(ビジネスマナー、ビジネスの場で求められるスキルの学習など)
  • 自社研修(組織体制の説明、サービスで扱う情報の管理体制について、その他会社の制度の説明など)
といった内容でした。いずれもオンラインでの実施で、グループワークを行うものが多かったです。

自分が入社した会社では技術研修は行われず、2週間の研修の後にOJT形式でそのまま業務が始まりました。
OJTが始まった最初の数日間は、プロジェクトの上司の方にZoomで直接教わりながらPCの環境構築や業務フロー、業務で扱うツールの使い方などについて教えていただきました。

初めのうちは簡単な保守タスクが割り当てられ、タスクをこなしながら一連の作業のやり方を覚えていくような形でした。
その後次第に、実際にリリースする大型の機能の開発に携わらせていただいたり、優先度の高いタスクを担当させていただいたりすることも増えました。

会社にもよると思いますが、Web系ベンチャー企業は大企業と違って研修期間が短かったり、技術研修を行わずにOJTで学んでもらう形式をとる会社は一定数あると思います(Web系企業でも大手の場合は、大企業と同様に新人研修の期間が長かったりします)。


■1日のスケジュール
最近の自分の1日のスケジュールは以下のような流れになることが多いです。



○モブレビュー
モブレビューとは、モブプログラミングのような形でソースレビューをしてもらうことを指します。自分の所属プロジェクトでは基本的に毎朝(誰も相談ごとがない場合はスキップ)実施しており、開発作業中の不明点や疑問点などがある場合は、Zoom上で画面共有しながら相談しています。

○出退勤時間
自分の会社ではコアタイムが11:00〜16:00となっているためその時間は出勤している必要がありますが、月の労働時間が所定の時間(8時間×営業日数)を満たすようにすれば、出退勤時間は自由にすることができます。
忙しい時は遅くまで仕事をすることもありますが、タスクに余裕のある時は早めに退勤したりしています。

○休憩時間
大体13:00〜14:00あたりでとることが多いですが、その日の気分や予定によって時間をずらしています。また、1時間まとめてとる必要はないため日によっては30分ずつ細かく休憩を取ることもあります。

○勤務場所
緊急事態宣言がずっと出ていたこともあり、入社してから一度もオフィスに行っていません(2021年10月時点)。ずっと自宅からリモートで仕事をしています。

10月から出社解除となりましたが、今のところ出社したい人だけがオフィスに行っているという状況です。周りのエンジニアの皆さんもオフィスに積極的に行こうと考えている人は少ない印象で、今後もしばらくは今の状態が続くと思います。
ただ、社長が以前「感染状況が落ち着いたら、いつかは週一でオフィスに出社という形にしたいかも」ということをチラッと話していた(ような気がする)のでそのようになるかもしれません。

ここで述べたことはあくまでも自分の会社での話ですが、似たような働き方・制度のWeb系企業は多いのではと思います。


その他、曜日ごとの予定についても簡単に触れていきます。

①エンジニアMTG
各プロジェクトのエンジニアが集まるミーティングです。作業時に気をつけて欲しいことや改善したほうがいいと思ったことを議題としてエンジニア全体で共有し、意見をもらったりしています。

②勉強会
業務時間内に任意参加の勉強会が開かれています。テーマは週によって変わり、最近ではセキュリティや2要素認証、TDDなどのテーマで行われました。勉強会は任意で開催することもでき、Slackで呼びかけて人を集めて輪読会を開いたりしている人もいます。

③雑談
ずっとリモートワークで人と話す機会がどうしても少なくなってしまうという理由から、雑談する時間がエンジニアチーム内で設けられています。こちらも任意参加で、時間になったら集まれる人でZoom上で集まって仕事や仕事以外の話をしています。雑談で情報共有をしたりするのが好きなので雑談Zoomがあるのはありがたく感じています。

また、自分の所属プロジェクトではスクラム開発を取り入れているので隔週で
  • スプリントプランニング
    スプリント実施による成果を共有し、進んでいる方向性が正しいかを関係者全員で検査・フィードバックする場
  • スプリントレビュー
    課題の共有と次回以降のスプリントの改善に向けた議論の実施
  • 振り返り(スプリントレトロスペクティブ)
    次のスプリントで、チームとして何を実現するかを決める場
があります。

会社及び各プロジェクト・部門ごとに様々な取り組みが行われていると思うので、どのような制度があるかやイベントが行われているかを聞いてみると、入社後のことをよりイメージしやすくなると思います。


■具体的にどんな仕事をしている?仕事のワークフローは?
Web開発エンジニアとして入社してから、主に自社サービスの保守・機能実装を行なっています。具体的な仕事内容としては、
  • クラス設計(実装の方針を考える)
  • 実装(フロントサイド・サーバーサイドの機能実装、バグ修正、リファクタリング、DBのテーブル作成、コマンド実装など)
  • テストコード作成(改修を加えた場所の動作確認を行うために作成)
  • テストプランの用意と実施(実際の利用シーンを想定したテストを実施)
  • リリース作業(ci全実行やステージング環境及び本番環境でのテストプランも実施)
等があります。また、仕事のワークフローは
  • チケット起票(タスク概要の確認とタスク管理)
  • ブランチ作成・実装(基本的に一人で実装し、分からないことがある場合は上司に相談する)
  • レビュー依頼・コード修正(プルリク上でやり取りする)
  • テストプラン作成・テスト実施
  • リリース枠の予約・リリース作業
という流れになることが多いです。

先輩エンジニアの皆さんは上記の他にも、レビュー(他の人のコードを見てコメントする)や不具合・エラーログ対応、要件定義、工数管理・タスク割り当てなどの仕事も行なっています。

Webエンジニアの仕事のイメージとして、実装作業がメインになると就活時は思っていました。実装作業以外にもテストプランの作成やテストの実施など、Webエンジニアになると色々な作業があるというのは意識しておくと良いかもしれません。


■Webエンジニアとして入社する際、未経験でも大丈夫か?
これについては会社によると思います。自分の場合、今の会社で初めて仕事をした時は「インターン等での実務経験は無いものの、ある程度プログラミング経験がある(ポートフォリオを作ったり、研究室の友人とゼミで使うシステムを作ったことがある)状態」でした。

入社して仕事が始まると最初に環境構築を行ない、タスクの概要を聞いたあと自分で実装を進めました。分からないことがあれば相談できる状態ではありましたが、基本的には自分で考えて作業するという形でした。そのためプログラミングスキルや基礎知識が全く無い状態だと作業を進めることができなかったりして結構苦労するかも、と個人的には思います。

恐らく面接の段階で基礎知識や技術の有無は確認されると思います。Webエンジニアの場合、もちろん会社や仕事内容にもよると思いますが、できれば基礎的な知識やコーディング経験を有していたほうが面接で有利になる&入社後に苦労しないように思います(会社によっては新人研修にて技術研修を実施しているために、入社時点で未経験でも問題ないと考えているところもあります。プログラミングスキルをどの程度必要としているかどうかは事前に確認したほうが良いと思います)。


■どんなスキルが必要?業務でどんな技術スタックを使っている?
仕事をする中で、プログラミングスキル以外で必要になると感じたスキルを挙げてみます。

○調べる力
実装方法が分からず既存のソースコードを探して参考にしたり、コーディングルールやツールの設定方法を知るために社内WIKIやSlackの過去ログを漁ることが作業中よくあります。
作業をスムーズに進めたり質問をする回数を減らすためにも、あらゆる場面で調べる力は必要であると感じています。

○相談する力
自分で考えたり調べても分からない時は、プロジェクトメンバーの皆さんになるべく早く相談することも大切です。自分はすぐに相談するということがあまり得意ではなく、同じ場所でずっと悩んでしまうことも何度かありました。
悩み続けてしまうとタスクが進まずプロジェクトの皆さんにも迷惑をかけてしまうので、ある程度自分で考えて分からなかったら相談する、ということは必要なことであると感じています。

○Git操作(会社・プロジェクトによる)
自分の会社ではソースコードをGitHub上で管理しており、作業に着手する時やコードを提出する時にGitを用いています。ブランチを作成したりプルリクを作成したり、コンフリクトが発生したらその解消をしたりと、作業をする上ではGit関連の知識・スキルも必要になります。
仕事をしている内に覚えていくことができれば問題ないと思いますが、基礎的な部分を知っていると入社後に苦労しにくくなると思います。


また、自分が業務で使用している主な技術スタックを挙げてみると
  • PHP
  • JavaScript(vue.js)
  • MySQL
  • Elasticsearch
  • TreasureData
  • GitHub
タスクによってはサーバーサイドだけでなくフロントサイドのコードを触ったり、DBを操作したりします。触れたことがない技術を用いる必要がある場合は、やり方について先輩に教えてもらったり自分で調べて学んでいます。裁量が大きいという点もWeb系ベンチャー企業の特徴の1つであるように思います。


■入社後に大変だったことは?
入社して初めの頃に苦労したことについても書いてみたいと思います。

○社内で使われている用語が分からなかった
社内WIKIを見たりミーティングで話を聞いている時に、社内用語が使われることが多々あります。今ではある程度把握できてきているのですが、入社して間もない頃は言葉の意味が分からず、都度Slackの過去ログを漁ったり先輩に聞いたりしていました。様々な社内用語を理解するのは時間もかかるので大変でした。

○社内WIKIが多く存在していて資料を探すのが大変
業務で使うツールの設定方法や環境構築の手順、コーディングルールなど自分の会社には様々なWIKIが存在しています。他にもタスクチケットやプルリクなど、社内WIKIに限らず目的の資料を見つけるのは今でも大変に感じています(入社したての頃は慣れていなかったため特に苦労した)。

○相談すれば教えてくれるが、基本的には自分で考えて作業する
自分の会社では自主性を行動目標の1つにしているので、なるべく自分の力で解決できるようにすることが求められています。気軽に相談できる環境ではあるのですが、自分で考える・調べることも必要であるため仕事に慣れるまでは少し大変さも感じました。

ベンチャー企業の場合、自分で考えることが求められる会社も多いと思います。自分の裁量で仕事を進めることが好きかどうか、という点もベンチャー企業を検討する上では判断基準として意識してみると良いかもしれません。


自分の入社後のことを書きつつ、自分が考えるWeb系ベンチャー企業の特徴についても書いてみました(入社前の話として就活時のことも記事に書いています)。会社によって働き方や制度、技術スタック等は大きく変わってくると思うので、気になったところはぜひ面接や説明会にて聞いてみることをお勧めします。
.自社のテックブログでも入社後のことについて記事を書きました。
このエントリーをはてなブックマークに追加

0 comments:

コメントを投稿