IT・エンジニア就活をしている方、IT企業から内定をもらった皆さん、
「エンジニアの初めの仕事ってなんだろう?」
って疑問ありませんか。今回はエンジニア1年目の筆者の業務や同期の業務から一般的な例も絡めて入社後から時系列で紹介します。(プロフィールはこちら)
4月から2〜3ヶ月:新入社員研修
入社後まず行われるのは新入社員研修です。新入社員研修は一般的にどこの企業でも行われます。学ぶ内容としては以下の通りです。
- 会社の人事制度や福利厚生、給与・労務規定など社内制度・ガイドラインの研修
- 電話対応、名刺交換、敬語、報連相などの社会人マナー研修
- Excel、PowerPointなどのOfficeソフト研修
- セキュリティ研修
などなど、業界問わず行われる研修はこれらの内容です。
IT企業特有の研修の内容としては、上記の研修に加えて、
- ITに関する内容を学ぶ研修(オンライン学習サイトや外部講師を招く)
- プログラミングなどの技術研修(会社によって言語が異なる)
- 技術研修をもとにした開発演習
- IT関連資格の学習
などが行われます。新入社員研修を通して、基礎的な部分を最低限身につけて配属・OJTに入っていきます。ここで、研修期間は会社ごとに異なり、1ヶ月の会社もあれば2〜3ヶ月、早い会社ではいきなり配属されるなど様々です。
6月〜:配属先ごとの研修・OJT・実務
新入社員研修後は、会社ごと、さらには配属先ごとでも異なることがよくあります。基本的に新入社員研修後からOJT(On The Job Training)が始まり、先輩社員(トレーナー)と新人(トレーニー)が業務に一緒に取り組んだり、時には面談や適宜相談をしながら業務理解、ナレッジの習得、部署メンバーとの交流などのサポートを受けつつ成長していきます。
OJTのトレーナーは自身と同じ部署出会ってもプロジェクトや仕事が違っていることもあります。実際に筆者自身、トレーナーとは異なるプロジェクトで仕事をしており、トレーナーとはたまに面談したり、チャットで相談したりなどと、一緒に何かをしている訳でなく、なんでも相談できる先輩という位置付けで色々とサポートしてもらっています。
トレーナー自身にも仕事があり、基本的に仕事に関しては自身のプロジェクトの先輩に教えてもらったり、自分で積極的に質問しながら仕事を覚えていく感じです。会社ごとに異なると思いますが、OJTトレーナーと二人三脚でやっていくというイメージはあまり持たない方が正解かもしれません。
OJTと聞くとなかなかイメージがつかないでしょうが、実際は数週間〜1年目の間ぐらいまで、不安なことや業務に関することなどなんでも気軽に質問できる先輩がつくものだと思っておきましょう。
続いて、配属後まず行う業務についてです。プロジェクトや会社ごとに異なりますが、筆者や同期が行っていることを例として紹介します。
配属後の業務1:プロジェクトの理解
配属後はどこも共通で、「プロジェクトの理解」が求められるでしょう。具体的にはシステム・サービスの要件定義書や設計書の閲覧、処理フローの把握などを行います。
自社パッケージを提供している企業ならパッケージの概要〜詳細までの把握を指示されます。
- 要件定義書の閲覧:システム・サービスの目的、機能・サービスの把握
- 設計書の閲覧 :システム・サービスの構成を把握(インフラ・基盤は?DBは?)
- 処理フローの把握:処理はどのような流れなのか?顧客目線でどうなっているのか?
などの目的で誰もが通る道です。
筆者的に把握・理解が大変だと感じるのはDB(データベース)を含めたデータの流れやその構造の把握や、処理フロー(システム同士の関係を含む)の把握です。
どんなシステム・サービスもDBを使い、避けては通れません。また、データベースにはテーブルなどが膨大にあり、それに伴い中身のカラム(データの項目)も膨大にあります。それらの把握が大変できた。
SQL(データベースを操作する言語)で検索したり、定義書や設計書などを見ながら、どんなデータが入っているのか、どんな処理かを地道に把握していきました。もちろん全てを理解しきれていませんが、業務に携わる上で最低限必要な知識だけはキャッチアップしていきます。
配属後の業務2:単体テスト
最初の業務で携わることの多い開発工程は、テスト工程です。テストは単体テスト・結合テスト・システムテスト・受入テストと段階が分かれており、その中でも、プログラムのモジュール単位のテストを行う単体テストから携わることが多いです。
では単体テストではどんなことをしているのかを紹介します。以下のPythonで書いたプログラムで「素数」を判定します。
“number”には任意の数値が入ります。プログラムの大きな流れとしては、numberが2未満ならFalse、また、numberとi(2〜{√number(整数に直す)+1}の数字)で除算をし、いずれの数字でも余りが0でなければTrue(素数である)、一つでも余りが0、つまり割り切れてたらFalse(素数でない)という処理の流れです。
単体テストではテストの仕様書をもとにテストをしていきますが、仕様書には
- number=1の場合、「1 is not a prime number」と出力される
- number=2の場合、「2 is a prime number」と出力される
- number=11の場合、「11 is a prime number」と出力される
などとテストケースが書いてあり、それをもとにテストを行い、本当に思った通りの出力がでるかを確認するのが単体テストです。(実際のプログラムはもっと複雑ですが…)
単体テストをすることでシステムやサービスはどのようなロジックで動いているのか、プログラムはどのように書いてあるのかなどを多く学ぶことができます。筆者自身、プログラムが思うようにできなくても、読めたらいいと言っている理由の一つです(記事はこちら)。
単体テストがある程度できるようになれば、結合テスト(単体テストのプログラムは全体のごく1機能のため、他機能と合わせてうまく動くかどうかを確かめる)、システムテスト(本番環境などでのテスト)、受入テスト(顧客に実際に使ってもらう)とより上の段階のテストに携わっていくこともあります。
配属後の業務3:プログラムの修正・追加機能の開発
テスト工程の他にも、開発に携わることもあります。そもそもシステムやサービスは新規に開発するプロジェクトでなければ、基本改修や顧客が求める機能の追加開発を行いながら繰り返し改良していきます。新人でも改修テーマの開発を経験することもよくあります。
改修・追加機能の開発といっても、要求を実現するためにソースプログラムを修正したり、ない機能ならば追記したりして、その後上記でも説明したテスト作業を行いリリースするという流れです。ただ、一部を修正・追加したことにより、他の機能への影響が発生する可能性もあり、影響調査なども行います。
配属後の業務4:保守・運用業務
配属後の業務として最後に紹介するのが、保守・運用作業です。皆さんがよく使っているLINEやInstagramなどのSNS、スマホゲームっていつでも快適に不便なく使えていますよね。たまにバグなどがあることもありますが、当たり前のように毎日いつでも使えます。
その裏では、システムやサービスの動きを確認し、もしバグや障害があったら即座に対処するエンジニアたちがいるから実現しています。(よくアップデートファイルが更新されるのもそのため)
皆さんはこのような業務に携わることもあるでしょう。前に紹介した「プログラムの修正・追加機能の開発」も大きくはここに入ります。アプリにしろ、企業のシステムにしろ止まってしまっては元も子もありません。日中は出勤しているエンジニアが障害対応できますが、夜中に何か問題が発生したら、対処する人がいなくなるという事態が発生します。そうならないために、夜勤があり、システム・サービスの監視業務をします。
現在は基盤をクラウドに移行する流れもあり、現場に出勤しなくても、自宅で対応することも可能ですが、夜中にアラートを知らせる電話がかかってきたりして大変な時もあります。
残業について…
皆さんの中にはIT企業は長時間労働、残業は当たり前だというイメージがあるかもしれません。これは半分正解で半分間違ってもいます。残業があるかないかでいうとあります。ただ、常に長時間残業しているという訳ではなく、リリースが近づいていたり、プロジェクトに問題があり(リソースが足りていないなど)、切羽詰まることで残業せざるを得ないことは事実です。
ただ、常日頃忙しい訳ではなく、リリース日近くではなかったり、プロジェクトに余裕があれば定時で帰れたり少しの残業で帰れることが多くあります。なので、筆者の同期も残業をしている人もいれば、基本的に定時か残業しても30分〜1時間ぐらいの人もおり、正直配属後のプロジェクトの状況次第です。
公開されている平均残業時間は割とあてにならないこともあるため、実際に働いている社員に聞いてみるとリアルな数値がわかるでしょう。ちなみに筆者自身は現状月10〜20時間ほどの残業をしていますが、タスクがあと少しで終わる時や、どうしてもその日中に仕上げたいタスクなどをする時に残業をしています。
ただ、もっと効率や時間を意識した仕事をしなければと日々試行錯誤しています。
現時点まで働いてきて
自身の仕事の仕方や同期からの話をもとに考えたことが以下の通りです。
誰しも自分なりに精一杯仕事をした結果残業することになってしまったり、タスクが多い、期日が近いタスクなどで残業せざるを得ない状況が多いです。ほとんどの人がその時できる最高パフォーマンスで仕事をしています。
しかし、本当に現状の働き方が最適なのでしょうか?「何か自動化はできないか?」「スケジュールを工夫すれば余裕ができるのでは?」、「他にもっと良いやり方がないか?」などと日々考えて仕事をしてみたら、残業を0にすることは無理でも、わずかでも残業時間でも減らすことは可能ではないかと思いました。
また、上司の指示が本当に問題ないのかも考えておくと将来自分がその立場になった際に改善できるかもしれません。本当は良くないですが、新人のうちだと残業がある=仕事で忙しいアピールができる上に社会人らしい愚痴も話せるようになり、少し自慢げになってしまうこともあります(体験談)
ただ残業していて感じるのは明らかに定時を回ってからパフォーマンスは落ちているということです。作業効率も悪くなり、所定労働時間以内ならすぐに終わるタスクでも時間がかかったりすることもあります。やらなければならないので仕方ないですが・・・。労働時間ってうまくできてますね。
最後に
いかがでしたか。IT企業に入社後は新入社員研修から始まり、現場配属はOJT+テストや保守・運用業務に携わっていきます。本記事は1年目の11月中旬時点での筆者目線で見聞き・経験したことをもとに書いたので他の会社では違うかもしれませんが、大体最初の業務は同じだと思ってもらって良いと考えています。
テストも保守・運用業務を最初に経験する全てはシステム・サービスの理解、基礎知識や技能を身につけるためです。これら業務経験を通してプログラミング技術やIT技術の基本知識、顧客知識を蓄えて成長していきます。
この記事で皆さんと年齢が近い人が就職後どんな仕事をするのかをイメージしていただけたらと思い執筆しました。皆さんも一緒にこのIT業界で頑張っていきましょう!
コメント