mixi bug shooting challenge #4 で優勝した話
mixi bug shooting challenge #4に参加してきました.
サービスの運営を見守るエンジニアという立場設定で,模擬的に制限時間内に不具合対応を2人組で行うという演習でした.システムにはRuby on RailsとMySQLが採用されているようです.
参加前の意気込みです.
Railsなんもわからん
— ラギ@東京 (@asRagi) 2020年2月1日
結果です.
Mixi Bug Shooting Challengeインターン,優勝しました!!🏅🏆🥇 #mixi_BSC pic.twitter.com/tBIRea3Xx7
— ラギ@東京 (@asRagi) 2020年2月1日
🤔
やったーーーーー!!!!!
当日のできごと
イベントは2人1組で行われました.相方はid:nisshii18くんでした.
午前中
環境構築や演習に用いるシステムなどのレクチャーを受けました.
お昼
加熱式弁当で盛り上がってる昼 #mixi_BSC pic.twitter.com/IIXFh7jTlf
— ラギ@東京 (@asRagi) 2020年2月1日
午後
チュートリアル問題を経て実際に演習を行っていきました.
課題は3つ用意されていました.各設問は50分前後くらいの制限時間だった気がします.
ネタバレを防ぐため具体的なことはあんまり書けません.
Q1
「消えるはずのないものがなんか消えてる」みたいな案件でした.
ぼくにSQLの経験がほぼ無だったこともありログサーバにクエリを投げに投げてたら制限時間がほぼ終わってました.
運営から与えられた調査に必要な重要情報を受け取り逃して20分くらい無にしてしまったのも痛く,情報が揃う頃には残された時間は10分くらいでした.
クエリ投げてる間に何が起きてるかの予想はなんとなくついていたのもあり,ログが出て原因が見えてすぐid:nisshii18くんがアプリ側の修正点をシュッと見つけてくれました.えらすぎ.
とはいえ,時間が足らず原因と修正案の報告のみになってしまいました.無念.
Q2
「消えるはずのないものがなんか消えてる」みたいな案件でした.当然Q1とは状況が違うようです.
Q1の試行錯誤を経てアプリとDBの雰囲気が掴めつつある感触はあり,やっていくぞという気持ちで満ちつつ挑みました.
サーバと格闘しながらQ1とは状況が違うねというのを確認しているうちにid:nisshii18くんが原因を特定していました.えらすぎ.
修正アイデアはすぐ思いついたものの,ぼくはリファレンスを見ないとRubyを書けないのでid:nisshii18くんにこういう修正してと伝え,id:nisshii18くんがプルリクに投げたコードを動作するように,より見やすいように,パフォーマンスが改善するように小言を言ったりコミットを投げたりしました.
修正PRは完成したものの,この問題でもログ取得の問い合わせがうまくいかなくて30分くらい無にしててかなりもったいなかった.
Q3
「バグの不正利用」みたいな案件でした.
「アプリのコードを参考に調査に必要な当該ログを見つけ出す」のがクリティカルな問題でしたが,ここをエスパーで解決できたのが大きかったと思います.
当該ログさえ見えれば対応修正は比較的容易に思いつくものだったので,残りの時間はより良い修正や他の可能性の検討に費やしていました(修正対象箇所前後に不慣れな処理が含まれていたので修正の確証は最後まで持てていませんでした).
id:nisshii18くんはこの作業の間に問題のバグを再現させるような別のクライアントサイドのバグを発掘していてすごかった.えらすぎ.
直前に修正PRを放り投げておしまいです.
感想
サービスが正しく動かないとか,0からサービスを作っていくとか,そういった経験は個人開発でも出会えるものの,ユーザーからの問い合わせやバグの不正利用といった問題は個人や小規模なサービスの開発ではなかなか出会えないものです.多分,大きなサービスを回してる企業でバイトしててもこうした仕事が降ってくることはあんまり無いんじゃないかな.
学生という立場での開発では出会えない問題に取り組む機会が提供されているのはすごく貴重なことだと感じました.
各問題の解説も非常に丁寧で,「このアプローチでも要件は満たすが,なぜ最善ではないのか」といった部分まで大切に説明されて本当に学びが多いインターンだった.
なんで優勝できたのか
フロントエンドとバックエンド
id:nisshii18くんはRailsやSQLなどの経験があり,一方のぼくはRailsはバイトで触っているもののフロントエンドやゲーム開発のクライアントサイドを触っていることがほとんどです.
ぼくがバックエンドを触ってて困ったときはid:nisshii18くんが解決してくれて,またぼくはid:nisshii18くんが見つけてきた情報からフロントエンドのバグのありかや修正の方針がスムーズに打ち立てられた,といった具合にお互いがお互いの得意分野でフォローし合えたのが本当に良かったかなと思います.
論理とエスパー
ぼくは現在Railsを用いたサービスを運用している会社でアルバイトしていますが,元々webの経験が全くなく,ちょっとしたきっかけから突如アルバイトに採用されいきなりRailsを触り始めたという経緯があります.
その結果,見慣れないリポジトリの修正に当たる際にRailsのお作法に沿わずにエスパーで修正を見つけ出すというあまり行儀がよくない力が身につきました.
Railsの経験があるid:nisshii18くんがコードの処理の流れから順当に問題を探り,そうしたアプローチで見つけにくいポイントをぼくがエスパーで見つけて近道するといった瞬間もありました.これも優勝を近づけてくれたかなと感じています.
まとめ
mixiさんのオフィスの観光くらいの気持ちで申し込んだイベントでしたが,学びも多くかなり参加して良かったなという気持ちです.
優勝は本当に運がよかった.技術の相互補完の面からも相性が良い優秀な相方と組めたのが何よりの運のよさ.
懇親会
インターンの懇親会が気合maxですごい #mixi_BSC pic.twitter.com/LxfmwmLZmM
— ラギ@東京 (@asRagi) 2020年2月1日
チーズのかたまりの上でパスタするやつ初めて実際に見た.ひとりで一生盛り上がってた.
合わせて読みたいid:nisshii18くんの記事 nisshii18.hatenablog.com