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

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

shnjtk
June 29, 2024

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

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. まとめ • プロダクト開発チームの生産性は顧客への提供価値をベースに評価する • プロダクト開発の生産性を向上させるには顧客理解が重要 ◦

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