見出し画像

学科で一番タイピングの遅かった僕がアトラエでエンジニアインターンを終えて

初めに

どうも、うめまる(梅月)です。 大学入学当初にコンピュータールームで行われた授業で、友達から「梅ちゃん学科で一番タイピング遅いよ~笑」と言われていました。

そんな僕が、アトラエのYenta(イェンタ)というビジネス版マッチングアプリのフロントエンジニアインターンを8ヶ月ほどさせていただいた体験記になります。 未経験エンジニアやエンジニアインターンに関する記事が少なく、「他の人は実務に入る前にどんな準備をして、現場に入ってからどういうことをやっているのかな?」と疑問に感じたので、同じような状況の方のお役に立てたらいいなと思いつつ書かせていただきます!

また、採用担当の加賀さんから「うめまるの体験談を求めている学生さんがいそう。」というありがたいお言葉もいただいたので、取り繕わずに自分の考えや感じたことを発信させていただきます!


エンジニアになろうと思った経緯

高校2年生の時からスウェーデン留学・移住がしたいなと考えていたので、現地の労働ビザがもらえやすくて、かつ自分の性格にもあっていそうなエンジニアになることを決めました。(なぜスウェーデン?とよく聞かれますが、長くなりそうなので省略させていただきます。)


インターン前までにやったこと

前提として、下記のように場所や環境にそこまで依存しない状態で勉強したので、比較的再現性は高いと思います。

  • ITについてほとんど知らない状態からスタートした。(基礎だけ授業で学習した)

  • パソコンと本とプロゲートというサービス以外に出費はない。

  • メンターのような人はいなかった。


そして、下記を参考に大学2年の秋学期から基礎学習をしました。

  • (プロゲート) HTMLとCSS, JSの写経を2周くらい

  • (YouTube) Clever ProgrammerチャンネルでJSの基礎学習

  • (本) りあクト!TypeScriptで始めるつらくないReact開発シリーズ

  • (本) The Road to React: Your journey to master React.js in JavaScript (2020 Edition)


その後、3つのプロダクトを作りました。

  1. コンピューターと対戦できる神経衰弱

  2. 友人と飲食店のWebサイト

  3. Reactを使ったポートフォリオ

エラーが頻繁に起こりましたが、ネットに書かれている正解やヒントを参考に、その問題の要点を自分なりに理解しながら進めていきました。個人的な意見ですが、どの会社でも未経験エンジニアの人に現場の人たちと同じようなレベルを求めていないはずなので、なぜその成果物を作ったのか、その過程から学んだことは何か、その先に何がしたいのかを明確にして成果物を作ればいいと思います。

* 上記の動画や本は1, 2年前のものなので、情報が古いかもしれません🙇🏻‍♂️


アトラエの前のインターン

アトラエに入る前に中国人とインド人が9割くらいの完全リモートワークの企業に2021年3月上旬から入りました。そこではプロダクトの大半を作り上げていたインドのスーパーエンジニアが直属の上司になったので、彼から色々学びました。

Githubのプロフィールに移ると、エンジニアの人がどれくらいプロダクトに携わったか確認できるのですが、大袈裟ではなく、その上司は365日全てコントリビューションしており、それでいて毎日楽しそうに仕事している姿に衝撃を受けました。

そんなこともありつつ、頑張ろうと意気込んでいたのですが、4月1日の朝にSlackを開くと「実力不足」ということで解雇通知が来ていて、その日に解雇されました。いきなりすぎて、流石にその日は落ち込みましたw


インターン面接

解雇されて数日後のタイミングで、たまたまアトラエがWantedlyにインターン求人の掲載を始め、その内容に興味を持ったので、YouTubeやブログなどでアトラエの方々が発信している情報を調べました。

加賀さんとWevoxのインフラエンジニアの篠隈さんに面接をしていただいたのですが、ブログなどで発信している「ガチ」な温度感がお二方からそのまま伝わってきました。また、二次面接の際には篠隈さんから「アトラエで働くからにはやりがいがあって楽しい反面、アトラエが掲げるビジョン達成のために大変だと感じる場面が多いです。」と正直に教えていただいたこともあって、他の会社からも合格をいただいていたのですが、採用されてすぐにアトラエで働くことに決めました。


Yentaでやったこと

React(Next.js) & TypeScriptを使って、フロントエンドのコーディングを行いました。主にYentaのキャリアマッチという、人材紹介のエージェントがYentaを通じて候補者を探すために利用するサービスの開発に携わらせていただきました。インターン期間でやった開発は以下になります。

  • アーキテクチャーをMVVM + Repositoryパターンに移行

  • 要件定義

  • 複数の機能追加

  • 一部機能をVue.jsからReact.jsに移行

  • ymlの設定を修正

  • TypeScriptのstrict true対応

インターンを始めてから少しずつできるようになっている感覚はありましたが、周りの先輩方がどんどん開発を進めていく中で、成果をあまり出せていない自分にもどかしさを感じていました。そう感じながらも実装を進めていると、キャリアマッチのアーキテクチャーをMVVM + Repositoryパターンに移行するタスクを僕に任せていただけることになりました。

移行前のレポジトリ状況をざっくり説明すると、.tsxファイルにビューとロジックが丸々書かれており、hooksで通信処理に関するコードを書いている状況でした。それをディレクトリ構成の異なるMVVM + Repositoryパターンに変更しました。

1つのアプリケーションのsrc配下を丸ごと修正・追加する機会はないので、がむしゃらになって頑張り、なんとか終わらせることができました。メンターだった夢積さんには、技術関連の相談をたくさんさせていただきましたが、その考えに対する丁寧なフィードバックを毎回いただくことができて大変助かりました。アーキテクチャー変更の詳細については、いずれ技術ブログに記載したいと考えています。


その他にやったこと

  • 7月頃にWevoxのデータサイエンティストの杉山さんとランチに行かせていただいた際に、機械学習に興味があるとお伝えしたら、杉山さんが社内で行なっているAI講座に参加してみる?と言っていただいたので、そちらも学ばせていただきました。(ありがとうございました😂)

  • アトラエの業務とは関係ありませんが、空いた時間でもプログラミングを勉強してみようということで、Python, Three.js, p5.jsなどを使って、書道家の方と一緒に書道✕デジタルを組み合わせた作品を創り始めました。先日は銀座のデジタルアート展覧会に作品を展示させていただきました。



アトラエで働く中でエンジニアとして学んだこと

準備時間はなるべく短くして、自分の入りたい環境に飛び込む!

大学受験や英語学習などを通して経験して感じたことでもありますが、何事もアウトプット前提でインプットしていくと、そうでない時に比べて学習効率がよくなるので、「やりながら学ぶ」というスタンスを大事にしています。

抽象化と具体化の癖をつける

一朝一夕で身につくものではないと自覚していますが、先輩方に質問させていただいた際には「DI(Dependency Injection )っていう概念は〜だから、ここでDIが使えるね」「この〜ってコードは、〜をやりたいからこっちのコードのuseEffectのこのタイミングで行われるレンダリング処理に相当するよね?」のような抽象→具体や具体→抽象→具体という思考プロセスで説明していただくことが多かったです。

もちろん抽象化、具体化のレベルやそもそも何を抽象化、具体化するかはその場面に応じて異なりますので、そのあたりの感度も高めながらコーディングすることが大切なのかなと感じました。

自分にとって都合の悪いことでも、チームに伝えた方がいいことはすぐに報告する。

自分のミスを誤魔化し続けると、周りからの信頼関係を損なうだけでなく、プロダクトやチームのパフォーマンスに悪影響を及ぼすので、都合の悪いことは正直に伝えたほうがいいなと感じました。

差分をはっきりさせる

コーディングに関して悩んでいたときに、Yentaのサーバーサイドの遠矢さんから「うめまるの今の状況だと、早くしようとする焦りで空回りしてるから、早さは一旦考えないで、自分の中で100%と思えるコードを書いてレビューをもらってみたら?そうすると先輩と比較して何が足りていないのか、何が間違っているのかを明確にできるから、エンジニアとしてより成長できると思うよ。」とアドバイスをもらいました。

メンバーに自分の作業内容の概要や一部を早い段階で簡潔に共有する

進めていく中で不安な点がある場合には、チームメンバーの人と早めに認識のすり合わせておくべきだと学びました。共有をしない状態で作業を進めて修正が発生すると、チェックして間違いを指摘するコストと修正するコストの2つが発生するので、最初の段階でそれらを極力減らせるようにしたほうがいいです。

また、似たようなコミットやファイルが出来そうだなと思ったときには、それらのロジックや重要な部分を包含している1, 2ファイルだけレビューをいただくと、レビュアー側の負担も減って、かつそのコメントに対する自分の修正範囲もそれらのファイルだけにできます。


エンジニアリング以外で学んだこと

(エンジニアとしての学びと完全に切り分けられるものではないですが)

主体的に働く楽しさ

これに関しては、「アトラエ ブログ」でググったり、YouTubeを見たりしていただけると先輩方が発信した情報が見れますが、とても働きやすい組織でありながらも、アトラエが掲げるビジョンを達成するために、誰もが慢心することなく絶えずサービスや組織の改善を模索していました。その環境がとても楽しかったです。

チームでサービスを作ることの面白さ

チームとして働くことで、個人ではできない規模のプロダクトが作れている感覚が面白かったです。また、個々人が自立して仕事をすることを前提として、困った時には自然と助け合う空気感だったので、安心して楽しく働けました。


終わりに

アトラエのインターンでは、色んな方に様々な場面でお世話になりました😌ありがとうございました!

 スウェーデン留学のためにアトラエを去ることになって寂しい気持ちもありますが、専攻科目と語学を勉強しつつ、全力で楽しみます!

下のスライド資料はアトラエの会社紹介資料なので、興味をもっていただけたら見てください😁


このnoteが「いいね」と思ったら、❤️マークで「スキ」してくれると嬉しいです!それではまた👋🏻


この記事が気に入ったらサポートをしてみませんか?