見出し画像

エンジニアとして生涯現役?マネジメントも実装も【Engineer's voice#1】

スマレジ開発部POSチームリーダーのOです。
連載の初回となるEngineer's voice#1を担当させていただきます。

今回は開発チームのリーダーが何をしているのか?どんなことを心がけて開発をしているのか?を紹介したいと思います。他社事例を参考にしたい方は、ぜひご一読いただけたら嬉しいです。


〜まずは簡単に自己紹介〜

■エンジニア歴:12年
スマレジに勤めて4年目、エンジニア歴は合わせて12年目です。世間一般でいうシニアエンジニアに入る歴になりました。

■スマレジ入社:2020年3月
現在、担当している業務はスマレジPOSのサーバー開発チームでリーダーとしてプロジェクト管理、若手育成そして開発実務などをさせていただいています

転職した当初は、キャリア面では、まだまだ実装スキルを活かしつつ、今後のことを考えマネジメントのスキルもつけていきたい、業務面では人の暮らしに深くかかわるシステムに携わりたい、という思いでスマレジに入社しました。

リーダーの業務はマネジメントだけではない

皆さんの中には、エンジニアは実装ができるのは若いうちだけ、年を重ねるごとに実装からは遠のきマネジメントにシフトしていかなければならない、というイメージをお持ちの方も多いのではないでしょうか?

スマレジでは、エンジニアなら誰もが実装を行ってますし、年齢で職種が囲われることもありません。実際40代になっても実装の第一線で活躍しているエンジニアも多数在籍しています。

(それにまだまだ拡充したい機能が多いため、実装もやらないと回りません(笑))

長らくエンジニアをやっていますが、今でも自身が書いたプログラムが意図した通り動いたときの嬉しさを感じます。

また、スマレジでは、開発経験や年次問わずお互いにコードレビューをしています。レビューに回る機会も当然あるのですが、機能追加で新しい画面をメンバーが作ってくれてレビューに上がってきたときには、レビューの緊張感の傍ら、その新しい動きを見るのがとても楽しみです。

リーダーエンジニアも実装まで一貫して担当

サーバーサイドなので裏方の処理も多いのですが、それでも新しいサービスや技術に関わる処理や設定追加では、そうしたものを扱えているわくわくがあります。例えばこの数年ではセルフレジや顔認証決済といった対応がありました。

プロダクト作りにおいては全ての裁量権がある

開発チームのリーダーとしては、やりたいことが上から押さえられるということは全く無く、裁量権はかなり与えられており、プロダクト開発に関することはとにかく任せてもらえます。例えば、機能開発では営業やカスタマーサポートとやり取りしながら、お客様の声を元にした要件や仕様を検討し実装、単体テストまで幅広く携わることができます。

新しい技術を用いた開発にしてもそれがユーザードリブンで必要なものであれば、インフラチームや技術統括部署と相談の上で提案し、実用化することも多くあります。

また最近では、プロダクトの開発の傍ら、開発メンバーの強い思いにより仕様書の充実や、自動テストの整備も発案により進めています。

それでいて、困ったときに上司の方に相談すれば、親身に一緒になって考え、アドバイスしてもらっています。

12万店舗(2023年3月現在)の営業を止めずに技術的負債を解消するために

開発の管理は新規機能開発だけではありません。不具合はもちろん、機能追加やスムーズな開発、安定稼働の妨げとなる、積み重ねられた技術的負債はプロダクトの競争力を削ぐことにもつながり、対処がますます重要になっています。

機能の拡充をしつつ、その力を削ぐ負債への対処にどうバランスよくリソースを投入し、優先度をつけてスケジューリングするか?といった判断が日々求められます。

要望への対処の傍ら、その付近のソースコードをリファクタリングする小規模なものから、自分たちで見つけた不備をタスク化してリリース内容に含めるといった改善活動も恒常的に行っています。

というのも、過去にプロダクトが成長する過程でそういった負債が足かせになることをチームとして痛感したことがたくさんありました。

実装当時は問題なく動いているように見えた機能が、お客様の増加に伴い様々な操作パターンが発生したことによってバグが顕在化し、お客様に不便を生じさせてしまうほか、お問い合わせ対応やバグ修正にも時間を取られ機能追加のための工数が圧縮したこと。

PHPのバージョンアップ時、それまでは、PHPの自由な書き方のおかげでやや不自然に書かれていても動いたプログラムが動かなくなり、不具合や内部エラーとなって対応に追われたこと。

プログラマ各人の興味で選択したライブラリが時間の経過で廃れて古い技術になり、メンテナンスが困難になったこと。

などなど‥‥たくさんの苦い経験をしました(泣)

今では、新たな負債が生じないよう、パフォーマンス懸念、コメントやロジックのわかり易さ、将来の改修時に不具合を埋め込むリスクなど、開発メンバーの意識は高く、開発時によく検討しています。

現在チームで行なっていることとしては、検査ツールでチェックしきれないプログラミングのアンチパターン/推奨パターンや、これまでの問題が発生したパターンをもとにチーム内で規約を整備し、実装やソースレビューに生かしています。

また、チームメンバーの発案で、各々の開発者がお問い合わせ対応や運用モニタリングにも参加することで過去の負債がもたらす悪影響について身をもって体感する場を設けたりもしています。

やりがいと緊張感のあるプロダクト

レジは生活に必要で欠かせないシステムで安定した稼働が求められ、やりがいと緊張感をバランス良く感じられるプロダクトだと思います。

私はスマレジに入社する以前、SIerに在籍していました。当時は開発をご依頼された(目の前にいらっしゃる)お客様に仕様について合意を頂いていました。

スマレジ開発に携わってからは、ご利用いただく多くのお客様(いわば不特定多数)にとって「どういう仕様であるべきか?」を利用する側にたち使われ方を想像し自身で仕様を決定することが、大きく変わりました。

また、過去リリース後に一部のデータが正常に登録出来ず、お客様の業務をとめてしまったことや、不正なデータが登録され、その修正に何日もかかってしまったことがありました…多くのお客様の業務(店舗営業)に影響なくリリースする緊張感は、とてつもなく大きいです。

ありがたいことに、ご利用いただけるお客様も増え、生活で目にする機会もどんどん増えてきました。プライベートで訪れたお店のお会計でスマレジを使われているとなんとも言えぬ嬉しさを感じます。「また頑張ろう」そういった気持ちにさせてもらえます。

スマレジ開発に長期的に携わる中で、機能追加やソースコード改善や自動テスト整備など、自分たちのアイディアでプロダクトや開発プロセスを改善できることに大きなやりがいを感じます。

こんなやりがいと緊張感のあるスマレジ開発の魅力を感じていただけていれば嬉しいです。


〜おすすめの参考記事〜

\「めちゃくちゃ良い!」を作るエンジニアを募集しています/