初めまして、開発本部の細木です。
21年度新卒でトヨクモに入社し1年が経ちました。
今回は就職から1年経って今までの経験などを振り返ってみたいと思います。
就職までの経緯
医師以外の道
高校の進路選択では、将来医師として地元で働きたいと思い、地方国公立大学の医学部に進学しました。
1浪の末合格し進学することはできましたが、その後大学時代を悶々と過ごすこととなりました。
医学の勉強が性に合わず、成績は低空飛行でした。
幸い良い友人に恵まれて何とか進級・卒業することができました。
人の役に立ちたいというモチベーションはありましたし、実習で患者さん達と話すのは楽しかったのですが、生涯これを生業としていくのは肌に合わないなという気持ちがありました。
また医師として働いている方々を見ていて、自分も彼ら・彼女らのようにやりがいを持って働いていけるのか?という不安が拭いきれず、5年生の頃から他の進路について模索し始めました。
ITエンジニアという職業
元々ITエンジニアの職業に対する漠然としたあこがれがありました。
その一方で、医学部を出てから企業へ就職すること自体一般的ではなく現実的ではないだろうなと考えていました。
実習をしていたある日、Lillianさんの転職エントリを目にしました。
この方は東大医学部を卒業し医師として働かれていましたが、心機一転してGoogleに入社されたそうです。
私はこの記事を読んで感銘を受けると共に、医学部卒でもITエンジニアとして雇ってもらうことは不可能ではないのかもしれないと思いました。
その時から就職について本格的に考え始めました。
内定を得るまで
基礎知識をつけるべく勉強を始めました。
Lillianさんのエントリの他、ネット上の記事を漁ってWeb開発の学習に良さそうだと感じたサービスを探し、取り組んでいきました。
Progate(5年生の10月頃〜)
まずは基礎の文法に慣れるためにProgateから始めました。
約1か月でPythonコース、JavaScriptコース、HTML/CSSコースを一通り完了しました。
何もわからない状態から始めましたが、手習いの意味でとても有用でした。
また、フロントエンドの知識は後々の学習の導入として役に立ちました。
AtCoder(5年生の11月頃〜)
基礎的なコードを書く能力がないとコーディング試験に通らないだろうなと考え、Progateの次に取り組みました。
約半年かけて茶色、約1年かけて緑色になれました。
後々のコーディング試験対策として役に立ったのはもちろん、SNS上で多くの人と交流でき、就職に関する情報やチャンスを得ることもできました。
また、はじめはPythonで問題を解いていましたが、マイナーな言語もやってみたくなり途中からはCommon Lispで解くようになりました。これがとても面白く、Lispを書くことに夢中になりました。
この頃からLispで仕事ができたら面白そうだな…と考えはじめました。
Web開発
成果物を作りたいと思い、Udemyで買った講座やネット上のチュートリアル等を進めました。
完成には至りませんでしたが、開発の雰囲気をつかむことができました。
就職活動
自社製品開発をしているスタートアップを中心に、馴染めそうな雰囲気の企業を応募先として考えていました。
応募先を探す中で、ClojureというLisp系の言語を開発に使っている企業があることを知り、それらの企業について調べていると、齊藤さんの退職エントリが目に止まりました。
このエントリを読んで、自分のような変わったバックグラウンドを持った人間でも受け入れてもらえそうだと感じ、応募してみることにしました。
国家試験が終わった翌日、弊社および候補として考えていた複数の企業に応募しました。
いくつか面接やコーディング試験を受けました。
最終的に弊社から内定をもらうことができました。
時期的に新卒は厳しいだろうな…と思っていたこともあり、非常に嬉しかったです。
入社後にやったこと
4〜5月
スケジューラーチームに配属
3日間の入社研修が終わり、早速スケジューラー開発チームに配属されました。
スケジューラーでは主にバックエンドをClojure、フロントエンドをClojureScriptで開発を行っています。 (モバイルアプリはTypeScript)
まずはスケジューラーのコードベースに慣れるため、フロントの易しめなタスクから始めることになりました。
ClojureScriptに加えて、Reagent (Reactラッパー) 、re-frame (Fluxアーキテクチャに基づく状態管理フレームワーク) などが利用されていて、慣れるまでに時間を要しました。 (1〜2ヶ月)
この時期はチームのスピード感に付いていくために必死だった記憶があります。
調べてもわからないことはチームメンバーにたくさん質問しました。
またCursive(IntelliJ)やGitなどの開発ツールを使い慣れていなかったためこれらについても勉強しました。
6〜9月
React Query導入
元々フロントの状態管理はre-frame中心でしたが、React HooksおよびReact Query中心に移行することになりました。
これらについて勉強しつつ、スケジューラに導入するタスクを行っていました。
バックエンド入門
フロントに慣れてきたので少しずつバックエンドを触り始めました。
次のようなことにチャレンジしました。
- スケジューラーのAPIを構成するライブラリ (Ring、stch.sqlなど) について一つずつドキュメントを読み、実際のコードベースに触れつつ学習する
- SQLの入門書を読む (「SQL 第2版 ゼロからはじめるデータベース操作」)
- 「テスト駆動開発」を読み、TDDを普段の開発に取り入れる
仕事の仕方について
タスクの進め方を考えたりハマった際の原因探索をしたりする工程に時間を掛けすぎてしまうことがありました。
進めたい内容についてメンターとの間で認識のずれがあると大きな手戻りが起きうるため、手を動かす前にきちんと認識合わせをするようにしました。
10〜11月のファーストリリースまで
この頃は11月のファーストリリースに向けて、残っている未実装機能やバグの対応を行っていました。
体感では一番忙しい時期でした。 (忙しすぎてあまり覚えていない)
11月ファーストリリース後〜3月
ファーストリリース後のバグ修正、機能追加を行っていました。
開発に慣れてきたこともあり、大きめのタスクを担当する機会が増えてきました。
Zoom連携機能
スケジューラーにはZoom連携機能があります。
予定を作成する際にボタン一つでミーティングルームを作成することができます。
この機能の公開に向けた修正、申請などを進めていました。
OAuthの理解に時間が掛かりました。
OAuthに詳しいメンバーに教えてもらったりドキュメントと格闘したりしていました。
予定詳細ポップアップの全画面表示
スケジューラーではカレンダー上で予定のカセットを開くとその予定の詳細な情報がポップアップで表示されます。
この表示を画面全体に広げられるようにしました。
機能要件をまとめ、叩き台実装を作るところから始めました。
開発のメンバーやデザインチームの方々と相談しつつ、UXや細かいレイアウト等を詰めていきました。
最近
大きめの機能実装やDBマイグレーションを伴うリスクの高いタスクが増えてきました。
応用情報技術者試験
CS関連の基礎知識を埋めたくなったので個人的に受験しました。
1年働いてみた感想
自己肯定感を得ることができた
これが就職して一番良かったと感じることです。
弊社で仕事を始めて、至らない部分がありながらも成果や態度が評価され、人間としての自己肯定感を得ることができました。
弊社では、レベルアップしていくために今自分がすべきことが具体的で、やったことの成果が評価としてすぐに返ってきます。
学生の頃と比較してかなり気が楽だと感じます。 (もちろん個人差があると思います)
仕事のスタイルが自分に合っている
普段の仕事では自分の席で黙々と作業する時間が大半です。作業中に割り込みが入ることも少ないです。
私はマルチタスクが苦手で、仕事を自分のペース・段取りで落ち着いて進めることができる今の環境は理想的だと感じています。
Clojureが楽しい
Clojureの良いと感じるところはたくさんありますが、特に以下の点が気に入っています。
- 書き方で迷う要素が他言語と比較して少なく本質のロジックに集中できる
- 構文がないに等しく、覚えていないといけないことが少ない
- 原則immutableで脳に優しい
- フロントとバックエンドで共通の言語を利用できるため、コンテキストスイッチが小さい
- 先述の通り疎結合なライブラリが多いため、学習コストが小さく抑えられる
- 明示的であることが好まれるため、ライブラリの暗黙的な挙動に振り回されることが少ない
- Structural Editingが便利
非情報系出身でもやっていける
キャッチアップは大変でしたが、なんとか慣れることができました。
勉強すること、必要に応じてコミュニケーションを取ることができる人であれば問題ないと思います。
周りが優秀
新卒、中途を問わず優秀な人ばかりで、周りから日々多くのことを学ばせてもらっています。
特に情報系出身の人・開発経験の長い人などは、自身と比較してかなり地力の差があると感じます。
いずれ追いつけるように努力していきたいですね…
競プロにかなり助けられている
上記の通り、就職活動のため・および趣味で競技プログラミングの問題を解いていました。
開発経験に乏しい非情報系の私が、短い時間で最低限のコーディング力を身に付けて就職できたのは競プロのおかげだったと思っています。
業務で直接的にアルゴリズムの知識を使うことは多くありませんが、言語を使いこなすための基礎的な感覚を身に付ける上で非常に有用だったと感じます。
普通に新卒就活をするならまずWebの勉強をちゃんとするべきだと思いますが、競プロも無駄にはならないと思います。
まとめ
私は医師の道から一転してITの世界に入りましたが、現在もトヨクモで元気に日々を過ごしています。
就職して1年経った今でも、職を得て生活できていること自体奇跡なのでは?と思うことがあります。
今までの縁に感謝しつつ、今後も成長していければと思っています。
トヨクモでは一緒に働いてくれる技術が好きなエンジニアを募集しております。
採用に関する情報を公開しております。
気になった方はこちらからご応募ください。