概要・はじめに
こんにちは。2023年9月にエンジニアとして中途入社した細野です。
社内では、会員システムグループでニフティポイントクラブの開発を担当しています。
この記事では、ニフティへ入社して感じたギャップや、会社や配属先のチームの特徴などについて紹介させていただきます。
簡単な自己紹介
前職では、SIerエンジニアとして約2年半勤務しておりました。
React、Rails、AWSの技術を中心に、複数案件の開発に携わらせていただき、その中で、案件内の開発リーダーや、新人エンジニアの育成などを担当していました。
ニフティへの入社の決め手は、IT転職サイトのカジュアル面談を通して、ニフティのサービスや社員に魅力を感じた為です。カジュアル面談後、ご縁があって、昨年ニフティへ中途入社しました。
ニフティポイントクラブの簡単な紹介
「ニフティポイントクラブ」は、運営実績20年以上、累計会員数330万人以上のポイントサイトで、普段のネットでのお買い物をニフティポイントクラブ経由で利用することでポイントを貯めることができ、貯めたポイントは現金や電子マネー、インターネット回線使用料に交換することで、お客さまの生活をもっとお得にできるサービスです。
詳細については、「ニフティポイントまるわかりガイド」を良ければご覧ください。
開発環境/技術
ニフティポイントクラブでは以下の技術を使用しています。
- クラウド:AWS、ニフクラ
- 仮想化環境:Vagrant、Docker
- DB:Oracle、PostgreSQL
- OS:CentOS
- 言語:Ruby、TypeScript
- フレームワーク:Ruby on Rails、Vue.js(Vue3)
- 構成管理:Terraform、Itamae
- バージョン管理:Git、GitHub、GitLab
チームでは、フロントエンド担当やバックエンド担当などで分業せず、チーム全体で臨機応変に開発しています。
ニフティで働いてみて感じたギャップ
[1] 想像以上にスクラム開発が中心であること
今まではウォーターフォール寄りの開発が多かった事もあり、ニフティでは、スクラム開発の文化がとても根付いているように感じました。
前職でも開発スケジュールの作成、定例MTG(進捗共有・振り返り)などは実施していましたが、スクラム開発で言うところのベロシティ(チームの平均的な速度や作業量の指標)を測ったり、チーム全員で計画を立てるという活動などは、あまり取り入れられていなかったように思います。
ニフティでは、「スクラムガイド」を参考に、積極的にスクラム開発を導入している為、スプリントプランニング、スプリントレビュー、レトロスペクティブなど、各スクラムイベントを通して、チーム全員でスクラム開発をしているという実感が強いです。
[2] 社内イベントが多く、学びや交流の場が多いこと
ニフティでは、社内交流会や勉強会が活発に開催されています。私も、DDD(ドメイン駆動開発)ギルドに入り、社内勉強会の運営に携わらせていただきました。
私たちのチームでは、DDDの書籍出版や勉強会等で有名な外部講師の方を招き、ドメインの設計やコーディングの配信する勉強会を開催しました。こちらは後日ブログにアップされる予定です。
他チームのイベントの例としては、AWS、Azure、GCPの3つのクラウドサービスについてハンズオン形式の勉強会や、社内システムのドメイン勉強会など、定期的に様々なイベントが企画されています。
また、学びの場だけでなく、チームや全社の交流会イベントも定期的に開催されていたりします。勿論強制参加とかではありません。
[3] たくさんのシステムの開発・運用を経験できること
配属直後にオリエンテーションと一緒にオンボーディング資料を共有頂いたのですが、最初は社内用語を含めた大量のドメイン知識と、システムアーキテクチャの複雑さに対して、理解が全然追いつきませんでした。
社内用語は、Notion QAを使用したり、チームメンバーから教えて頂くことで、自然と慣れていきました。
システムの理解については、まだ全体的に理解が浅いと感じています。
レガシーシステムでは良くある話なのかも知れませんが、ブラックボックス化されてしまっている仕様や処理が所々あり、「エンジニアに与える認知負荷の高さ」が開発チームの大きな課題の1つだと捉えています。
現在は、DDD(ドメイン駆動開発)やDaC(Document as Code)などのプラクティスを通して、チーム全体で積極的にアイディアを出しながら、改善活動に取り込み始めています。
ポイント開発チームの主な作業
ポイント開発チームでは、主に以下に関する作業を行ってます。
[1] 事業開発
ビジネスサイド側の依頼内容に沿った開発行います。依頼内容には、1人月を超えるような規模の新規機能の開発や既存機能の改修を進めていきます。
開発物としては、ユーザー向けの機能追加が多い印象です。
[2] システム部開発
こちらはシステムの課題に沿った開発を行います。例としては、システムのモダナイゼーションやコストカットの為の開発などがあげられます。
DB移行やライブラリのバージョンアップ、サーバーの棚卸など内部的にシステムを作り替えたり、コストカット施策の立案〜開発までを進めていきます。
[3] 運用保守
基本的には1人月の範囲で収まる規模の既存機能の改修やパッチ適用の他、問い合わせに依頼が上がった場合の既存機能の調査対応などを行います。
おわりに
この記事では、私がニフティへ中途入社して感じたギャップや会社やチームの特徴などについて紹介させて頂きました。
最初は覚える事のボリュームの多さや、チームメンバーの活躍する姿を目の当たりにして「本当にやっていけるかな?」と何度も思ったりしました。
ただそんな中でも、周りの方に支えられ、少しずつチームに貢献出来るようになってきているように感じます。仕事において「何をやるか」も大切ですが、「誰とやるか」はそれ以上に大切な要素だと言えるのではないでしょうか。
そしてニフティには、知識、経験共に「この人と一緒に働きたい」と思えるような人が多いように感じました。
現場の技術的負債も多く、大変だと感じる面もありますが、システムのモダナイゼーションを進める事で得られる経験は、とても良い経験になると思っています。
私自身もいち早く皆さんのお手本社員になれるように、今後もスキルを磨き続けていきたいと思います。
もしニフティの開発に興味頂いた方は、以下リンクよりお気軽にご連絡ください。