2021年9月に未経験のエンジニアとして入社し、約3年間在籍したユカシカドを退職することを決断しました。 ユカシカドへの感謝の意も込めて、過ごした3年間の振り返りと今後について書いてみたいと思います。

入社のきっかけ

大手企業の経理職として新卒のキャリアをスタートしました。最初は資格を取ったり前向きに取り組んでいましたが、次第に経理業務そのものよりも業務の効率化の方に関心が向くようになり、プライベートでプログラミングを独学するようになりました。 その結果、「プログラミングを本職にしたい」という思いが強まり、転職活動を進める中でユカシカドと出会いました。 尿から栄養を解析するサービスのユニークさに惹かれたこと、自分と同じようにキャリアチェンジしてエンジニアになった先輩がいたことが決め手となりました。

入社後の経験

プログラミングに入門した

入社後、業務時間内でExercismというサービスを使ってひたすらRubyのプログラミング課題に取り組みました。 解けた課題はCTOに提出し、レビューを受けるという日々が続きました。 毎日プログラミングに集中できることは嬉しい反面、一日も早く開発チームに加わって貢献したいという焦りも感じていました。 入社前から独学していたものの、プログラミングスキルが不足しており、毎回の課題に苦労しながら取り組んでいた記憶があります。

▼当時の修行リポジトリ

exercism

開発チームに合流

GitHubを振り替えってたところ、最初の Pull Request は入社から約2ヶ月後でした。 最初のタスクは、ユーザーにポイントを付与する機能の実装で、手取り足取り教わりながら進めました。 その後はリファクタリングやGraphQL API の実装など様々な課題をこなしていく中で、少しずつ自分ができることを増やしていきました。

フロントエンド開発の経験

入社から1年ほどたった頃、既存のアプリのEコマース部分のWeb版を開発する話がありました。当時、フロントエンドエンジニア1人しかいない状況だったため、私もWebサービスの開発に加わらせてもらえることになりました。 これまでJavaScriptを少しだけ書いた経験しかなかったため、Reactへの入門し、フロントエンド開発の基礎を学ぶことができました。 どんな些細な質問にも優しく答えてくださった鈴木さんには大変感謝しています。

新サービス(TYPE FOOD)開発

新しいモバイル向けアプリを開発することになり、機能ごとにメンバーで分担し、要件定義からAPI実装までを行いました。 プロジェクトの後半、フロントエンドの開発が間に合わない見通しになり、自ら志願してフロントエンドの開発に加わりました。 以前のWebサービス開発の経験が活かされ、フロント開発のスピードアップに貢献できたと思います。

▼リリース直後、「ヘルスケア/フィットネス」部門で2位になったときはメンバー全員で喜びました

ios_app_ranking

モジュラ・モノリス、ドメイン駆動設計への挑戦

新サービスが追加されたことで、サーバーサイドが非常に複雑化し、現行のアーキテクチャーでは解決が難しい課題が浮き彫りになりました。 CTOの指導のもと、現行アーキテクチャーでは解決できない問題を議論し、DDDを忠実に落し込んだアーキテクチャーをRailsで実践する方針が決まりました。 これまでのアーキテクチャーを根本的に見直すことに最初は戸惑いましたが、ドメインの関心とデータの関心を完全に分離することで実装量は増えたものの、純粋にドメインを表現できるようになったという手応えがありました。 アーキテクチャーの移行途中で退職することになりましたが、この方針の行く末が気になるところではあります。

なぜ転職を決断したか

「他の開発組織はどうなっているのか」という好奇心と、「より自分がドメインへの関心が高いサービスを開発してみたい」という思いから転職を決断しました。 また、コンフォートゾーンを飛び出し、新たな挑戦をしてみたいという気持ちもありました。 ユカシカドとしては道半ばのところで離脱するのは大変心苦しかったのですが、人生一度きりという思いから、この決断に至りました。

ユカシカドで得られるもの

少しでもユカシカドに興味を持ってくれる方が増えたら嬉しいですし、お世話になった感謝の気持ちも込めて、退職前に私の視点からユカシカドをご紹介させてください。

豊富なアセットと多彩な機会

  • ネイティブアプリ、Webサービス、社内用基幹システムがあり、ソフトウェア開発に様々な角度から関わることができます。
    • CTOとの距離が近く、ひとりひとりの意向を汲んでもらいやすいため、希望すればサーバーサイドエンジニアがフロントエンド開発に携わらせてもらう、といったことも可能です。
  • Eコマース、検査(画像)解析の機能など、取り組む課題が非常に面白いです。
  • 自社工場を持っており、物理的な課題にも取り組む機会があります。

▼ベンチャーで自社工場を持っているのはかなりレアだと思います

課題解決力が鍛えられる

  • 先述のアセットを少人数(投稿時点では私を除いて5人)で運用しなければならず、一人あたりの裁量が大きいです(認知負荷も大きいですが)。
  • 課題発見、要件定義、開発までエンジニアが担うため、ソフトウェア開発に留まらない問題解決力が求められます。
    • 例えば、「仮説を立てて自分でBigQueryでデータ分析を行い、その結果をもとに機能開発を開発し、効果を測定する」といったことを一人のエンジニアが周囲を巻き込みながら取り組んでいます。

ユカシカドの文化

システム開発部の特徴

  • サーバーサイド
    • 設計を重視する文化があり、事前検討を大事にしています。 (CTOからは「作戦(設計)で仕事の8割は終わっている」とよく言われます)
    • 2024年8月にはドメイン駆動設計を本格的に取り入れ、アーキテクチャーの刷新がありました。
  • フロントエンド
    • 「誰でも開発できるフロントエンド」がコンセプトに掲げられていて、アーキテクチャーから命名規則まで細かく方針が定められています。
    • ドキュメントが充実しており、些細なことでは悩まずに快適に開発できます。
  • 全体
    • 人数が少ないため、密にコミュニケーションを取りながら進める文化があります (テキストで伝えにくい内容はオンラインでの会話も多用します)
    • だいたい週2回の頻度で雑談会があり、技術に無関係な雑談と技術的な話題をセットにして持ち回りでゆるく開催しています。
      • 雑談の話題はサッカー、好きなマンガ、子ども、音楽、ガジェットなどが多いです。

働き方

  • リモートワークと親和性が高い
    • 多くのメンバーが週3~4日程度のリモートワークをしています。
    • お子さんの送迎などで一時的に業務を中断し、夜に再開するなど、フレキシブルに働くことができます。
  • 定例会議は少ない
    • 10:00 ~ 朝会 / 16:00 ~ 夕会があり、原則全員参加で進捗や困りごとを共有します。
    • 定例の会議は(投稿時点では)週1回程度で、他は必要に応じて関係者でオンライン会議を行います。

どういう人が多いか(部署問わず全体を通して)

  • 全体を通して、困った時に助けてもらえる、根っからの良い人が多い組織です。
    • どこに聞けば良いか分からない、聞き方すら分からないようなざっくりした疑問を投稿するための help-me というSlackチャンネルがあります。
  • 年齢や入社歴に関係なく話を聞いてもらえます。 (俗に言う「人ではなくコトに向かう」文化があると思います)