Slide 1

Slide 1 text

巨大プロジェクトにおける オンボーディング
 島本 晃平
 2021.08.10 FORCIA Meetup #3 エンジニアとして技術を「伝える」技術


Slide 2

Slide 2 text

自己紹介 ● 島本 晃平 (Kohei Shimamoto) ○ 2013年新卒入社(9年目) ● ソフトウェアエンジニア ○ 大手の旅行・福利厚生企業の開発・運用(2013年~now) ■ 大手旅行会社の巨大プロジェクトのEL(2019年~2020年) ● このプロジェクトでの経験をお話します ○ 技術教育チーム(立ち上げの2014年から2018年くらいまで) ○ 新規事業立ち上げ(2020年~now) ● 趣味 ○ サッカー(社会人新宿区1部リーグ所属) ○ 旅行(写真のドブロブニクは最高!!) 2

Slide 3

Slide 3 text

新規事業 旅行用モデルコース提供サービス Trakite 3

Slide 4

Slide 4 text

4 小豆島観光協会様の事例はこちら @trakite_pr 新規事業 旅行用モデルコース提供サービス Trakite

Slide 5

Slide 5 text

目次 ● フォルシアの「大型」案件とは ● オンボーディングの難しさ ● オンボーディングを促すアクション ● アクションの結果 ● エンジニアリーダー視点から見たフォルシア 5

Slide 6

Slide 6 text

フォルシアの「大型」案件とは 6

Slide 7

Slide 7 text

フォルシアの案件規模 エンジニ アの人 数 7 大規模 期間 1人 数日 2~3人 数ヵ月 4~10人 1~2年 少数の案件 大部分の案件

Slide 8

Slide 8 text

私がリーダーを務めた「大型」案件の規模 エンジニ アの人 数 8 大規模 期間 1人 数日 2~3人 数ヵ月 10人 1年 私がリーダー を務めた案件 4~10人 1~2年 大部分の案件 少数の案件

Slide 9

Slide 9 text

私がリーダーを務めた「大型」案件の規模 エンジニ アの人 数 9 大規模 期間 1人 数日 2~3人 数ヵ月 10人 1年 私がリーダー を務めた案件 4~10人 1~2年 大部分の案件 少数の案件 2人から7ヵ月かけて10人へ 沢山オンボードしている

Slide 10

Slide 10 text

フォルシアの特徴 エンジニ アの人 数 10 大規模 期間 1人 数日 2~3人 数ヵ月 4~10人 1~2年 ほぼ社員で構成 大部分の案件 少数の案件 10人 1年 私がリーダー を務めた案件 精鋭メンバーが領域ごとに 分担することが多かった

Slide 11

Slide 11 text

私がリーダーを務めた「大型」案件の特徴 エンジニ アの人 数 11 大規模 期間 1人 数日 2~3人 数ヵ月 10人 1年 私がリーダー を務めた案件 4~10人 1~2年 業務委託含む構成 チームでまんべんなく対応 大部分の案件 少数の案件 ほぼ社員で構成 精鋭メンバーが領域ごとに 分担することが多かった SHIFT

Slide 12

Slide 12 text

オンボーディングの難しさ 12

Slide 13

Slide 13 text

オンボーディングの難しさ 13 ● パフォーマンスを発揮できる環境の構築 ● 文脈のキャッチアップ

Slide 14

Slide 14 text

パフォーマンスを発揮できる環境の構築 14 ● 心理的安全の確保 ○ チームの雰囲気にどうやって馴染むか ○ 文脈のキャッチアップが大変・案件の難易度も高い不安 ○ はじめましてのメンバーでの信頼関係の構築 ● メンバーの主体性の確保 ○ 何からやればいいのやら ○ 期待値調整 ■ 求められる役割は? 案件を通して得たいものは?

Slide 15

Slide 15 text

文脈のキャッチアップ 15 ● 開発のあれこれ ○ 設計・実装方針・フレームワークの使い方 ○ 顧客や業界特有のビジネスロジック ● ドキュメントのあれこれ ○ 大量のドキュメントの管理 ● コミュニケーション方法のあれこれ ○ 社内外で関係者が数十人もいる中でだれに、なにを?  ○ 電話・JIRA・backlog・メール・MTGのいつ、どうやって?

Slide 16

Slide 16 text

オンボーディングの難しさ 16 ● パフォーマンスを発揮できる環境の構築 ○ コミュニケーションの課題 ● 文脈のキャッチアップ ○ キャッチアップの順番整備の課題

Slide 17

Slide 17 text

オンボーディングを促すアクション 17

Slide 18

Slide 18 text

オンボーディングを促すアクション 18 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する

Slide 19

Slide 19 text

オンボーディングを促すアクション 19 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する  キャッチアップ促進 コミュニケーション改善

Slide 20

Slide 20 text

オンボーディングを促すアクション 20 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する ちょっと具体に話します さくっと話します

Slide 21

Slide 21 text

オンボーディングを促すアクション 21 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する

Slide 22

Slide 22 text

にぎやかす 22 コミュニケーションの量を増やすためのにぎやかな雰囲気を作る 心理的安全を確保する ● 基本の挨拶・パーソナルな話をする ● チームのスタンスに合わせて煽ってにぎやかす ○ 「大変な時こそ笑って前向きに」が部のコンセプト ● PM、部長、リーダーなど偉い人程いじる ○ キャラクターを見せてもらい「壁がない」ことを周知する ● 若手や業務委託の人の発言を促し、主体者であることを求める

Slide 23

Slide 23 text

オンボーディングを促すアクション 23 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する 

Slide 24

Slide 24 text

コミュニケーションの場を作る 24 コミュニケーションの質を高めるために目的に合わせた場を設定 心理的安全の確保とキャッチアップを促進する ● キックオフMTG ● スタンドアップMTG ● スプリント振り返りMTG ● 設計・実装方針の認識合わせMTG ● MRのレビュー

Slide 25

Slide 25 text

コミュニケーションの場を作る 実施タイミング 25 コミュニケーションの質を高めるために目的に合わせた場を設定 心理的安全の確保とキャッチアップを促進する ● キックオフMTG → フェーズごと ● スタンドアップMTG → 毎日 ● スプリント振り返りMTG → スプリントごと ● 設計・実装方針の認識合わせMTG → 1,2ヵ月に1回 ● MRのレビュー → 都度

Slide 26

Slide 26 text

コミュニケーションの場を作る 実施目的 26 コミュニケーションの質を高めるために目的に合わせた場を設定 心理的安全の確保とキャッチアップを促進する ● キックオフMTG → PJの認識合わせ ● スタンドアップMTG → 互いを知る ● スプリント振り返りMTG → 開発プロセス改善 ● 設計・実装方針の認識合わせMTG → 開発の認識合わせ ● MRのレビュー → 文脈のキャッチアップ

Slide 27

Slide 27 text

キックオフMTG フェーズごと・PJの認識合わせ 27 ● フェーズ毎に実施 ○ 要件定義、開発、試験など ● 案件概要 / 全体のスケジュール / 開発の進め方 / プロジェクトリスク について / チームで達成したいこと、個人で達成したいことをすり合わ せる ● キックオフMTGは全社的に実施する文化がある

Slide 28

Slide 28 text

スタンドアップMTG 毎日・互いを知る 28 ● 毎日、一人当たり1分、今日やること、疑問 の共有 ○ 具体的な相談は後で ● 全体への共有 ■ 顧客状況などのPJ関連トピックの共有 ● テーマを決めておしゃべり ○ 雑談・パーソナルな話をするのも目的の一つ

Slide 29

Slide 29 text

スプリント振り返り スプリントごと・開発プロセス改善 29 ● 今回のスプリントの状況確認(5分程度) ● プロセス改善_スプリント振り返り (20~30分) ○ KPT(Keep / Problem / Try) ● 次のスプリントでやること_バックログ棚卸し(15分) ● にぎやかしも忘れずに

Slide 30

Slide 30 text

設計・実装方針の認識合わせ会 隔月・開発の認識合わせ 30 ● チーム全体でのより深い認識合わせ ○ 日常の個々のメンバーでのやり取りよりも踏み込む ○ 設計意図の共有や方針に関する不明点の解消 ● より良い設計・実装方針の相談 ○ メンバーの知見を集結・共有して最適な設計を考える ■ モジュールの新機能の活用法検討など

Slide 31

Slide 31 text

MRのレビュー 都度・文脈のキャッチアップ 31 ● MRに対して :thumbsup: 2つ以上でマージOKのルール ○ 全メンバーでレビューをする ○ 基本的に自分はすべてのMRをレビューしていた ● 要件を把握している人のレビュー ○ 設計・実装方針に沿っているか ● 要件を把握していない人のレビュー ○ レビューを通してキャッチアップする ■ 実装の意図がわからなければレビューコメントで質問 ■ あとからジョインした人にも可読性の高いソースへ修正

Slide 32

Slide 32 text

ドキュメントのエントリーポイントを作る 32 ● このドキュメントどこにあります?は100回聞かれる ● まずは「これ見て」で調べられる状態になる ○ 各ドキュメントの置き場へのリンク ○ 誰が何に詳しいか ○ 先方とのコミュニケーションの方法 ● 「書いてなかったよ」→「ここにあるよ。追記もよろしく」 ○ みんなが同じ所を通って整備出来る状況がつくれる ○ ドキュメント探し・コミュニケーション方法のキャッチアップを促す

Slide 33

Slide 33 text

オンボーディングを促すアクション 33 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する コミュニケーション改善

Slide 34

Slide 34 text

オンボーディングを促すアクション 34 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する キャッチアップ促進

Slide 35

Slide 35 text

タスクアサインの工夫 35 チームジョイン時の最初のタスクアサインの工夫 ● 自走力に合わせてゴールに向かって走れるタスクをアサイン ● こなしながらあれこれキャッチアップ出来るようにアサイン ● 責任もセットでアサイン

Slide 36

Slide 36 text

タスクアサインの工夫 36 チームジョイン時の最初のタスクアサインの工夫 ● 自走力に合わせてゴールに向かって走れるタスクをアサイン ● こなしながらあれこれキャッチアップ出来るようにアサイン ● 責任もセットでアサイン

Slide 37

Slide 37 text

タスクアサインの工夫 自走力とは 37 ● ゴール明確化力 ○ モジュール開発 ⇒ Input / Output ○ 検索ページ開発 ⇒ 要件から仕様への落とし込み etc. ● 実行力 ○ モジュール開発 ⇒ テストを書いて通す実装力 ○ 検索ページ開発 ⇒ 設計、対応方針、タスクの分解 etc. タスクの粒度が大きくなると実装力以外の能力が求められる

Slide 38

Slide 38 text

タスクアサインの工夫 自走力とは 38 タスクの大きさ (習得に経験が必要) 小 大 ● 要件面 ○ 要件から適切な仕様への落とし込み ○ 要件を実現する実装方法 ● 開発プロセス面 ○ 設計力・適切な処理の粒度 ○ 開発順序・検証項目 ● 実装面 ○ 必要機能の明確化と実現 ○ 現状のアプリの理解

Slide 39

Slide 39 text

タスクアサインの工夫 自走力のある人  39 分割して 対応順に 並べる ● ゴールを明確化し、タスクを分解して、適切な順番で対応する ● 経験が少ないと難しい作業、手戻りが多くいつまでも終わらない ○ 伴走してもいきなり検索ページを作るのは難しい 実装 自走力がある人の大きなタスクの進め方 モジュールの実装 etc.

Slide 40

Slide 40 text

タスクアサインの工夫 タスクの粒度・渡し方 40 自走力・経験 豊富 これから スプリント タスクの分解から丸っ とお任せ 小さく分解 明確なゴール 順番に渡す 飲み込み易く フォロー 少しずつ大きくしながら ゴール明確化力を養う

Slide 41

Slide 41 text

タスクアサインの工夫 41 チームジョイン時の最初のタスクアサインの工夫 ● 自走力に合わせてゴールに向かって走れるタスクをアサイン ● こなしながらあれこれキャッチアップ出来るようにアサイン ● 責任もセットでアサイン

Slide 42

Slide 42 text

タスクアサインの工夫 キャッチアップの順番 42 ● 要件面 ○ 要件から適切な仕様への落とし込み ○ 要件を実現する実装方法 ● 開発プロセス面 ○ 設計力・適切な処理の粒度 ○ 開発順序・検証項目 ● 実装面 ★ここを促進させるアサイン ○ 必要機能の明確化と実現 ○ 現状のアプリの理解 キャッチアップ順

Slide 43

Slide 43 text

タスクアサインの工夫 タスク例 43 ● 課題・ゴール ● 対応方針 を具体化して 手を動かせるようにし 成功体験を作る ● ソース上の対応箇所 ● 参考実装・実装の経緯 なども伝えて 手を動かしながらアプリの キャッチアップを促進

Slide 44

Slide 44 text

タスクアサインの工夫 44 チームジョイン時の最初のタスクアサインの工夫 ● 自走力に合わせてゴールに向かって走れるタスクをアサイン ● こなしながらあれこれキャッチアップ出来るようにアサイン ● 責任もセットでアサイン

Slide 45

Slide 45 text

タスクアサインの工夫 責任もセットでアサイン 45 ● 「このタスクをゴールまで持ってく責任は貴方にあります。」とアサイン ○ プロとして信頼して任せるというメッセージ ■ ヘルプを求めても良いが期限内の完遂に責任を課す ■ 期限直前でヘルプを上げても間に合わない ● 任せて放置ではない ○ ゴールを明確化し自走出来る状況を作るまでは手伝う ○ 適度に声をかけて走れているか確認 ■ 自走できる状況を都度作り直す ● ※心理的安全を確保しているから取れるアクションであることに注意

Slide 46

Slide 46 text

オンボーディングを促すアクション 46 明日から実践出来る3つ ● にぎやかす ● コミュニケーションの場を作る ● タスクアサインを工夫する キャッチアップ促進 コミュニケーション改善

Slide 47

Slide 47 text

アクションの結果(?) 47

Slide 48

Slide 48 text

アクションの結果(?) 48 ● 100~200コミット/日 の爆速開発 ● 「大変なのにいつも明るく前向きで良いチーム」 ○ と評価されその年の社内No.1プロジェクトに選ばれる ● 他チームから移籍してきてくれたメンバーからの絶賛の声 ○ 「チームにめちゃくちゃスムーズにジョイン出来ました」 ○ 「こんなにみんながレビューしてくれるチームはないです」 ● メンバーの成長(もちろん個人の能力によるものが大きい) ○ 外部メンバーが運用フェーズの要に ○ 当時新卒1年目のエンジニアが次フェーズで中心メンバーに

Slide 49

Slide 49 text

エンジニアリーダー視点から見たフォルシア 49

Slide 50

Slide 50 text

エンジニアリーダー視点から見たフォルシア 50 ● エンジニア ○ 前向きさ・責任感・学習意欲があり、コミュニケーションの質が高い ● PM ○ 仕様の番人として絶大な信頼がおける ○ エンジニアとも対等な関係で丁寧なコミュニケーションがとれる ● 営業 ○ エンジニアとの対立がない ○ 顧客と対等な立場を築くためのタフな交渉を請け負う頼れる仲間 ● 顧客との関わり方 ○ パートナーとしてプロジェクトオーナーと対面出来る面白さ

Slide 51

Slide 51 text

EOF