はじめまして、2022年4月に新卒入社した渡部です。 これからFLINTERSに入社を考えている人に向けて、また自分自身に向けた振り返りとして、この3ヶ月間で行った新人研修や会社のことを書こうと思います。
目次
自己紹介
私は大学では物理を専攻していましたが、大学の勉強は程々で他のことばかりに熱中していました。他のこととは例えば旅やビジコンなどですが、その中にプログラミングもありました。 大学3年目の終わりごろからプログラミングを勉強し始めました。それまでにプログラミングの挫折経験が2度ほどありましたが、なんとか初学者の壁を突破(?)することができ、プログラミングにハマることができました。
その時はお金もなかったので、学習スピードは遅かったですが独学で学んでいました。それから大学を2年間休学して本格的に学び、フロントエンドの領域でフリーランスとして活動したり、Webアプリを個人開発したりしていました。
勉強した技術で言うと、(プログラミングという表現が適切か分からないですが)HTMLとCSSから始め、JavaScript(Vue.js/React.js/Nuxt.js/Next.js)、PHP、Ruby(Ruby on Rails)、Python(Django)、C++など、広く浅く学んでいきました。それぞれの言語の習熟度としては、とりあえず動くものは作れるくらいで、理解度としてはとても浅かったと思います。
就職活動もエンジニアを中心に行なっており、広告というドメインにも興味があったため、広告の領域でエンジニアリングができる弊社への入社を決断しました。
会社について
入社前のイメージ
入社前は正直不安の方が大きかったです。広告系の企業はブラックなイメージがある(個人の見解です)し、ネット上にFLINTERS内部の情報は多くないと感じたためです。また、業務内容もあまり分かっておらず、ざっくり「広告系のシステムを作ってるのかな」というイメージで、具体的にどんなことをしているのかは把握できていませんでした。
入社後のギャップ
実際に入社してみると、とても好印象を受けました。まず残業が少ない(研修の3ヶ月間は残業0だった)し、有給も充実していて休みも取りやすいし、業務機器や書籍の支援も充実してると感じました。想像以上に良い仕事環境で、入社前の不安は杞憂に終わりました。
業務は基本的にオンラインなので、出社している人がほとんどいないことにも驚きました。始業時間も10時と早くはないため、比較的緩めの生活ができています。2年目以降は裁量労働なので、さらに自由度は上がると思っています。
研修期間中は定期的に各チームの先輩方とオンラインでランチする機会があったので、各チームの業務内容を詳しく知ることができましたし、出社する機会がない状況でも会社内での繋がりを作ることができました。また、先輩方と話す中で、優しい方がすごく多いなという印象を受けました。
研修について
研修は幅広い領域に関して行われました。具体的には、LinuxコマンドやGitに始まり、プログラミング言語(Scala)、データ関連、オブジェクト指向、ドメイン駆動開発(DDD)、インフラ、テスト、チーム開発、顧客起点開発など、多岐に渡りました。
元々自己紹介で書いたくらいの多少のプログラミングの経験はありましたが、実施された研修内容はちょうど自分が知らなかった分野や理解が浅かった分野ばかりで、とても良い学びになりました。研修期間も3ヶ月間あり、無理ないスピードで丁寧に教育を受けられたため、1つ1つの知識をしっかり定着させることができました。
Linux/Git
まずLinuxに関して、これまではcdコマンドくらいなら使ったことはありましたが、苦手意識はありました。研修を受けたことで様々なコマンドを知ることができ、CLI操作への苦手意識がなくなり、むしろ好きになることができました。以前はちょっとしたファイルを作るのにもFinderやエディタから作っていましたが、研修後はCLIで作ることが多くなりました。
Gitに関して、これまでGitHubは使ったことがあり、とりあえずpull, add, commit, pushだけは使えるという状態でした。研修を通してaddやcommitが何をしているのかも知ることができ、rebaseなどの便利なコマンドも使えるようになり、Gitで管理することの利点を理解することができました。
プログラミング言語(Scala)
Scalaを学習することに関して、最初は抵抗がありました。と言うのも、Scalaはあまり聞かない言語だったし、調べてみても最近はあまり使われていないイメージだったからです。Scalaでしか作れないシステムはないと思っていたので、わざわざ学習コストの高いScalaを学ぶことに疑問を持っていました。
結果、Scala研修を終えて、やって良かったなと思っています。理由としては、研修では単にScalaの文法を学んだだけではなく、Scala学習を通して他のプログラミング言語でも使える汎用的な知識や概念を学べたからです。例えばDDDや依存性の注入(DI)について知ることができたし、静的型付け言語を体系的に学ぶことで「値全てがオブジェクト」というオブジェクト指向の考え方について理解が深まったし、型が決まっていることの安全性や変数が不変であることの大事さを知ることができました。Scala学習を通して、プログラミング全般への理解が深まったと感じました。
また、確かにScalaはネット上に情報が少なく学習コストの高い言語ですが、会社内にScalaが得意な人が多いので、分からないところは教えてもらうことで大きな壁にぶつかることなくスムーズに学習を進めることができました。
データ
これまではSQLは「SELECT句なら見たことあるな」くらいの理解度で、Webアプリケーション開発でDBを扱う時もフレームワークに任せっきりでした。研修でSQLを1から学び、Scalaを使った開発でも直接SQL文を書くことが多かったので、SQLの基本的な知識を身につけることができました。元々データに関する知識はほとんどなかった私ですが、SQLだけではなく、ETL/ELTについても面白いなと思えるようになりました。
インフラ
インフラに関しても、独学では勉強しづらく以前は苦手だと感じていました。Dockerは触ったことはありましたが何をしているのかイマイチ理解できておらず、AWSも「とりあえずS3は画像を置くところなんだな」くらいの理解しかありませんでした。Dockerを体系的に学び、AWSに関しても他の企業の新卒と合同で研修を受けたことで、理解度が上がりました。特にAWSに関しては面白さを感じもっと学びたいと思ったため、研修後も自発的に学んだりしています。
まとめ
研修全体を通して、自分が学びたかったことや理解が浅かったことをちょうど学ぶことができ、とても理解が深まりました。小手先の知識だけではなく、裏側の仕組みや幅広い分野の基礎を体系的に学ぶことで、エンジニアとしての土台が作られたように感じました。
3ヶ月間伴走していただいた研修チームの方々や、詰まった時に質問に答えていただいた皆様、ありがとうございました。研修で学んだことを活かし、またこれからも学び続け、業務に励んでいきたいと思います。