Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
社内でスピードアップコンテスト開催に挑戦した話
hmatsu47
PRO
April 12, 2022
Technology
0
200
社内でスピードアップコンテスト開催に挑戦した話
吉祥寺.pm29【オンライン】 2022/04/12
hmatsu47
PRO
April 12, 2022
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
SolidJS で Supabase の Row Level Security を試してみた
hmatsu47
PRO
0
160
Aurora MySQL v1 → v3 の移行(調査・計画編)
hmatsu47
PRO
0
44
Aurora MySQL v1 → v3 の移行を準備する
hmatsu47
PRO
1
570
Javaのレガシーな Web アプリを ECS Fargate を使って段階的に作り直し/マイグレーションする話
hmatsu47
PRO
1
230
モノレポのGitHub(Enterprise)からCodePipelineを呼び出す小ネタ
hmatsu47
PRO
0
42
コミュニティとのゆるいつながりの中での恩送り
hmatsu47
PRO
0
31
FlutterでSupabaseのPostgreSQL with PostGISを試してみた
hmatsu47
PRO
0
330
RDS/Aurora関連アップデート(2021年版)
hmatsu47
PRO
0
73
FlutterでMapboxとSupabase(PostGIS)を使ってみた
hmatsu47
PRO
0
490
Other Decks in Technology
See All in Technology
The Fractal Geometry of Software Design
vladikk
0
560
DOM Invader - prototype pollution対応の衝撃 - / DOM Invader - prototype pollution
okuken
0
100
ソフトウェアライセンス 2022 / Software License 2022
cybozuinsideout
PRO
1
1k
How to start with DDD when you have a Monolith
javujavichi
0
260
複数のスクラムチームをサポートするエンジニアリングマネジメントの話
okeicalm
0
1.1k
LINEのB2Bプラットフォームにおけるトラブルシューティング2選
line_developers
PRO
3
290
JAWS-UG re:Habilitaion 報告 / JAWS-UG OITA rehabilitation
hiranofumio
0
120
【toranoana.deno#7】Denoからwasmを呼び出す基礎
toranoana
0
100
データをモデリングしていたら、組織をモデリングし始めた話 / engineers-in-carta-vol3-data-engineer
pei0804
4
3.3k
Istio入門
nutslove
15
4.9k
現状のFedCMの動作解説と OIDCとの親和性について- OpenID TechNight vol.19
ritou
2
450
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
3
9k
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
Documentation Writing (for coders)
carmenhchung
48
2.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
It's Worth the Effort
3n
172
25k
Building Flexible Design Systems
yeseniaperezcruz
310
34k
Web development in the modern age
philhawksworth
197
9.3k
Clear Off the Table
cherdarchuk
79
280k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.4k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.7k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
172
8.4k
Thoughts on Productivity
jonyablonski
43
2.3k
Transcript
社内でスピードアップコンテスト開催に 挑戦した話 吉祥寺.pm29【オンライン】 2022/04/12 まつひさ(hmatsu47)
社内でスピードアップコンテスト開催に 挑戦した話 (但し失敗成分多め) 吉祥寺.pm29【オンライン】 2022/04/12 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) • https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています 以前 MySQL 8.0
の薄い本を作って配っていました ◦ Qiita の記事: https://qiita.com/hmatsu47/items/ceb75caf46e3c761095d ◦ GitHub リポジトリの他、印刷版を BOOTH で配布していました ◦ 2021/5 発行の 8.0.24 対応版を最後に更新停止しました https://note.com/hmatsu47/n/n3ad586c31dce 3
吉祥寺.pm トーク参加 2 回目です • 前回は約 1 年前 ◦ わたしのまわりのニュー・ノーマル
3 選 ◦ https://speakerdeck.com/hmatsu47/watasifalsemawarifalseniyufalsemaru3xuan • 某 有名企業のパーカーと T シャツをいただきました! 4
吉祥寺.pm トーク参加 2 回目です • 前回は約 1 年前 ◦ わたしのまわりのニュー・ノーマル
3 選 ◦ https://speakerdeck.com/hmatsu47/watasifalsemawarifalseniyufalsemaru3xuan • 某 有名企業のパーカーと T シャツをいただきました! 5
本日のネタ • 社内でスピードアップコンテストをやってみた • 出題以外のところでいろいろな技術を使ってみた • 開催直前に問題が発生 • 開催にはこぎつけたものの… •
あらためて浮き彫りになった組織の課題 6
きっかけ • インフラチーム→ SRE →正式な SRE チーム発足 2 期目 •
正式メンバーとともに、協力メンバーも増えた • 「性能」はサイト(サービス)信頼性の重要なポイント • 座学の機会はあるが(実務以外で)実践の機会がない 7
きっかけ • インフラチーム→ SRE →正式な SRE チーム発足 2 期目 •
正式メンバーとともに、協力メンバーも増えた • 「性能」はサイト(サービス)信頼性の重要なポイント • 座学の機会はあるが(実務以外で)実践の機会がない • 期初の目標の一つとしてコンテストの開催を入れた ◦ SRE チームリーダーと相談して決定 8
社内事情 • 20 年 over モノの Web サービスを提供 • 初期の
5 年間以外は Java で開発 • 8 年ぐらい前に Web フレームワークの利用をやめた • 社外の ISUCON などには参加しづらい雰囲気 9
社内事情 • 20 年 over モノの Web サービスを提供 • 初期の
5 年間以外は Java で開発 • 8 年ぐらい前に Web フレームワークの利用をやめた • 社外の ISUCON などには参加しづらい雰囲気 • コンテストをやるなら自前開催の必要がありそう 10
準備① 構想 • 前述のとおり「実務以外の実践の機会」を提供する • 対象は SRE とその協力メンバーのうちの希望者 ◦ マネージャ含む
• いきなり長時間は難しいので半日程度の軽いレベルで • 個人戦ではなくチーム戦で ◦ 他メンバーの考え方やスキルを知る機会に 11
準備② 事前周知 • 準備の初期段階で対象メンバーの一部に意思確認 ◦ 競技参加?それとも主催側? ▪ 結果としてマネージャの 1 人が主催側、ほか全員競技参加
• 全体ミーティングで事前の開催予告(複数回) • カスタマサポート部マネージャへの協力依頼 ◦ 一時的に連携が取りづらくなる可能性があるので 12
準備③ 初回の題材選び • 初回は「定番」中心で ◦ 非効率な DB データ取得(N+1、無駄な行・列の取得) ◦ テーブル構造の欠陥
◦ メモリ不足になる処理&ヒープメモリ容量の設定ミス • 個人研究でわざとクソコードを書いて出題のベースに ◦ https://github.com/hmatsu47/kuso-code-samples (最初から公開してた) ◦ 3 種類用意してそのうち 1 つをベースに出題 13
準備④ 出題の調整 • ③の出題ベースの 1 つをもとに内容を調整(Web API) • 実際に自分でコードや設定の修正を試行 ◦
問題点を把握した状態から 1 時間強で修正できた • ベンチマークを(普段書かない)Go で作成 ◦ https://github.com/hmatsu47/kusocode-bench (これも最初から公開) ▪ Go 何もわからない ◦ 初期コードと修正後のコード(複数パターン)で得点を確認 14
準備⑤ 集客と事前説明 • 対象メンバーに参加意思を確認 ◦ 結局、対象者全員が参加表明 • (ルールの範囲で)チーム編成は参加者の選択にお任せ • レギュレーションを(段階的に)事前説明
15
準備⑥ 小道具の作成 • Web API 動作確認用フロントエンドを React で作成 ◦ https://github.com/hmatsu47/kuso-code-samples
◦ 即興で作ったので props の型適用を忘れたまま本番へ • 得点掲示板を(はじめての)Vue 3 で作成 ◦ https://github.com/hmatsu47/kusocode-rank-app ◦ 開始早々バグが発覚したので慌てて修正(が、まだバグが) ▪ 謎の「残り時間 01:89:60」「1 分に 1 回残り時間が 60 秒長くなる」 16
問題が発生 • 開催直前の横槍 ◦ ミーティングでは異論が出なかった方面から • 結果として ◦ 時間を短縮(全体 4
時間→ 2.5 時間に) ◦ マネージャ不参加に 17
当日の結果 • やはり時間が足りず ◦ どのチームも想定到達点には至らず ▪ 「コードとテーブル構造の直し方」の見立てができているチームがなかった ◦ 一応「面白かった」という反応は多かったが… 18
アンケートでは • 一部「チーム戦」「競技形式」が辛かった、という声が ◦ チームメンバーに迷惑を掛けてしまった ◦ うまく立ち回ることができず恥ずかしい • 必ずしも「時間が足りなかったからダメだった」という ことではなかった
◦ もちろん時間も足りなかったけれど 19
コンテスト以前にすることがあった • 参加者のつらみをなくす ◦ 「失敗」を許容する組織風土 ▪ 口では「失敗 OK」とは言ってもそう受け止められない雰囲気があった • まずは「メンバーが自信を持てる」環境づくり
◦ 自己肯定感大事 ◦ 「実践の機会」は一旦違う形で(模索中) • 「苦手だからパス」が許される空気も 20
結論:人類自社にはまだ早かった • 心理的安全性の確保が先 • サイト(サービス)の信頼性もそこから 21
コンテスト 次の開催 いつの日に 22