Upgrade to Pro — share decks privately, control downloads, hide ads and more …

爆速開発文化を支えるProduct Engineerの 開発生産性向上の取り組み

Avatar for shnjtk shnjtk
June 29, 2024

爆速開発文化を支えるProduct Engineerの 開発生産性向上の取り組み

Avatar for shnjtk

shnjtk

June 29, 2024
Tweet

More Decks by shnjtk

Other Decks in Technology

Transcript

  1. © LayerX Inc. 2 自己紹介 高江 信次 (Shinji Takae) 株式会社LayerX

    バクラク事業部 プロダクト開発部 カード開発グループ EM LayerX • 2019年12月にLayerXにジョイン。バクラク事業の立ち上げから参画し、当初は 主にインフラの開発・運用を担当。 • 現在はバクラクビジネスカードの開発チームマネージャーとして、インフラからアプ リ開発に軸足を移して事業開発を推進。 • 「爆速開発」を体現する強いチームを作るために、日々奮闘しています。 経歴 • ソニー株式会社(R&D) → ソニーコンピュータサイエンス研究所(CSL) → ソニー・グローバルエデュケーション → フリーランス → LayerX @shnjtk
  2. 6 © LayerX Inc. バクラク事業 ミッション 圧倒的に使いやすいプロダクトで わくわくする働き方を。 企業活動を支えるコーポレート業務は、ミスができない難しい業務。 バクラクはそんな業務の負担を少しでも軽くし、日常の業務がわくわくするような体験を届けます。

    使いやすさへの圧倒的なこだわりと、深い顧客理解で業務効率化を実現。 手作業、ハンコ、紙のやり取りから脱却し、事業と組織を支える本来の仕事に向き合えるようサポートします。
  3. 7 © LayerX Inc. バクラクが対象とする業務領域 バクラクは、企業取引の前段となる「稟議の統一」と「債権・債務の一元管理」が可能。 従業員・経理のそれぞれが係る業務領域において、なめらかな業務連携により企業経営を加速させます。 取引先 債権管理 債務管理

    ※ 開発予定の機能を含む 請求書処理 経費精算 振込 稟議 法⼈カード 請求書発⾏ 稟議 仕訳 ⼊⾦消込 ※ ※ ※ 仕訳 発注 請求 発注 請求 銀⾏ 会計ソフト 仕訳データ 振込データ ⼊⾦データ 従 業 員 経 理
  4. 8 © LayerX Inc. バクラクシリーズラインナップ 仕訳・支払処理効率化 法人カードの発行・管理 稟議・支払申請・経費精算 帳票保存・ストレージ 帳票発行

    * 経費精算のSlack連携は申請内容の通知のみ AIが領収書を5秒でデータ化 スマホアプリとSlack連携あり 領収書の重複申請などミス防止機能 AIが請求書を5秒でデータ化 仕訳・振込データを自動作成 稟議から会計までスムーズに連携 年会費無料で何枚でも発行可 インボイス制度・電帳法対応 すべての決済で1%以上の還元 AIが書類を5秒でデータ化 あらゆる書類の電子保管に対応 電子取引・スキャナ保存に完全対応 帳票の一括作成も個別作成も自由自在 帳票の作成・稟議・送付・保存を一本化 レイアウトや項目のカスタマイズも可能 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・
  5. 10 © LayerX Inc. バクラクの開発組織 請求書発⾏ 機械学習‧データ Platform Engineering Engineering

    Office 申請‧経費精算 請求書受取 電⼦帳簿保存 ビジネスカード Design QA
  6. 12 © LayerX Inc. プロダクトエンジニアという潮流 • 顧客理解の解像度を高く持ち、それ を源泉として優れた体験を創出する • 顧客課題の解決に対するオーナー

    シップを持ち、プロダクト価値を最 大化する • 技術だけでなくデザインやビジネス ドメインの領域にも越境する https://note.com/niwa_takeru/n/n0ae4acf2964d プロダクトエンジニアとは
  7. 19 © LayerX Inc. プロダクト開発における開発内容の分類 アウトカムに直接つながるもの アウトカムに直接つながらないもの • 新機能開発 •

    機能改善 • バグ修正 • 事業の継続や業務の都合上必要なもの • リファクタリングやリアーキテクティング • テストカバレッジの向上
  8. 20 © LayerX Inc. 新機能開発・機能改善の流れ 社内メンバー 要望DB Backlog Sprint Board

    要望収集チャネル ‥‥‥ ‥‥‥ ‥‥‥ ‥‥‥ 要望企業名、重要度、要望内容や 背景などをSlackに投稿 ‥‥‥ ‥‥‥ ‥‥‥ ‥‥‥ 要望棚卸会で開発するかどうかを判断 開発するものはBacklog化する 既にBacklogにある場合は追加で 紐づける スプリントプランニングでスプリント中 に開発するものを決める
  9. 21 © LayerX Inc. Backlogのアウトカムスコア定義 要望企業数 開発コスト ✖ 業務インパクト アウトカム

    = 開発コスト 内容 1 半日程度 2 1〜3日程度 3 5日程度 4 10日程度 5 1スプリント以上かかる 見積もり困難 項目 内容 その機能を利用できる ユーザー権限の数 1ユーザー権限あたり +15 運用で代替もしくは 回避可能かどうか 代替や回避不可なら +20 可能だが大変なら +10 発生頻度 (機能が必要とされる頻度) 該当する操作が週に数回以上 発生するなら +10 事故誘発の可能性 その機能がないことでオペミスなどの 事故を誘発しそうなら +30 開発コストの定義 業務インパクトの定義
  10. 26 © LayerX Inc. 顧客理解 : 要望棚卸会 • 開発メンバーが顧客要望を理解する •

    顧客が本当に困っていることを深掘りして、優先順位付けや仕様検討 の参考にする 目的 内容 • 商談に出ているBizメンバーも含めて、プロダクトに関わるメンバーが 参加する • 顧客や社内から出た要望を整理し、Backlogに載せるかどうか、いつ やるかなどを判断する • 顧客ヒアリングが必要な場合はタスクとして設定する 効果 • 顧客の声という一次情報に触れられるため、開発メンバーの顧客解像 度向上に役立っている • 事前のご要望からニーズを深掘りした上で顧客ヒアリングに臨むため、 何を聞きたいかが事前に明確になっている
  11. 27 © LayerX Inc. 体験の作り込み : レビュー会 • 開発中の機能を社内に披露することで、開発者を讃えるとともに、 全体に対して機能を周知する

    目的 内容 • 各プロダクト開発チームから、一週間の機能アップデートをデモする • なぜその機能が必要か、どういうニーズから生まれたかを丁寧に説明 する • 参加者は積極的にフィードバックする 効果 • 多くのフィードバックを得られることで、リリースする前により良い 改善につながる • チームを超えたメンバーの認知・交流が促進される
  12. 28 © LayerX Inc. 体験の作り込み : ET会 (Exploratory Testing:探索的テスト) •

    リリース前のテストよりも前の段階で、開発チーム全員でテストを実施 することで、早期に不具合を発見し、リリース前のテスト期間の短縮や、 チームのテストスキルの向上を図る 目的 内容 • リリースされる機能について担当者をアサインし、事前に「テストチャー ター」を記載した上で検証を実施する • 発見した不具合について、どうやって発見したかのHowも含めてチー ムに共有する • 挙げられた修正点・改善点をBacklogもしくはSprint Boardに積む 効果 • 不具合を見つける以外にも、文言や操作が分かりにくい、ミスが起きそ うなど、体験を損ねている箇所の発見につながっている • 他のメンバーはどういう観点で考え、どのように不具合を発見してい るかを学ぶことで、自身のスキル向上に活かせている 参考:やってみよう!探索的テスト 〜ハイクオリティな妄想の高速ループ〜 https://www.jasst.jp/symposium/jasst18tokyo/pdf/E2.pdf
  13. 29 © LayerX Inc. 改善デー • 日頃から気になっているがなかなかできていない、細かな修正したい 箇所や改善したい箇所を集中して対応する ◦ 「アウトカムに直接つながらないもの」に取り組む日

    目的 内容 • 事前に改善したいことをBacklogに積んでおき、改善デー当日には 自分がやりたいものをそれぞれ選んで着手する • 1日の終わりに、各自がやったことを共有する 効果 • 技術的負債の返済と開発者の精神衛生を保つ • 「改善デーがある」ということが、通常のスプリント中は価値提供に 集中することに寄与している
  14. 30 © LayerX Inc. コードレビューガイドラインの策定 • チームメンバーからの 「いつまでにレビューすればいいか分からない」 「何をレビューすればいいか分からない」 という声が上がったことがきっかけ

    • レビューが遅れることにより、レビュイーがレビュアーにSlackで メンションするなど、非効率な状態が続いていた 経緯 • レビュアーやレビュイーに求められる心構えや、どのような観点で レビューを行うかについてチーム内で認識を揃える • コードベースの品質を高い状態で維持する • 実装された機能について、コードレベルで理解している人が最低2人 以上いる状態にする 目的
  15. 31 © LayerX Inc. コードレビューの観点 • 重要な箇所は正しくテストされているか • テストしやすいコードになっているか •

    エラー処理は適切か 品質 複雑さ • 必要以上に複雑(コードをすぐに理解できない状態)になっていないか • いきすぎた抽象化や早すぎる最適化がされていないか • 将来必要になる「かもしれない」ことのために今は不要な実装がされていないか • 既存の設計や実装と一貫しているか • その言語の一般的な慣習やイディオムに沿っているか 一貫性 可読性 • 変数や関数の命名は適切か。読んで意味が分かるか • コメントは適切で分かりやすいか。「何を」ではなく「なぜ」を説明しているか • エラーメッセージは分かりやすいか 知識の共有 • レビュアーは自身が知っている情報をFYIとして記載することでメンバーに知識を 共有する
  16. 32 © LayerX Inc. コードレビューで期待すること・しないこと レビュアーに期待すること レビュイーに期待すること Do’s Do’s •

    1営業日以内を目処に行う。遅れる場合はAckを返す • 自身よりも適切なレビュアーがいる場合はその人に依頼する • 変更の中に素晴らしいものがあれば賞賛する • PRは小さく、一つの目的にフォーカスする • 1つのコメントに対して1つの修正をcommitする • 口頭で解決したレビューをPRに記載する Don’ts Don’ts • 個人的な好みを押し付ける • レビューを複数回に分ける • 完璧さを追求する • PR上だけでコードの意味を説明し、コードに反映しない • レビュアーのコメントをResolveしない レビュアーに期待しないこと • バグの発見 • 後方互換性が維持されているか • 仕様に沿って実装されているか
  17. 34 © LayerX Inc. 現状の課題と今後の展望 • 「提供までにかかった時間」については、まだしっくりくる評価手法が 立てられていない • アウトカムスコアや機能の利用率などを分析・活用してチームで改善を

    検討するサイクル(改善の型)をスプリントに深く組み込めていない 現状の課題 今後の展望 • 「提供までにかかった時間」の評価手法を立て、既存の評価指標と合わ せて開発生産性を多面的に分析し、より多くの価値提供ができるよう 開発サイクルやチーム運用の改善に活用する • より良い評価指標・評価手法を模索し、開発生産性の評価自体をアップ デートする
  18. 35 © LayerX Inc. まとめ • プロダクト開発チームの生産性は顧客への提供価値をベースに評価する • プロダクト開発の生産性を向上させるには顧客理解が重要 ◦

    使われるものを作る • 個人ではなくチームで生産性を向上させるために、ボトムアップで意見を 出し合い改善を続ける