モヒカン技術ブログ

ソフトウェアエンジニアの備忘録

ISUCON失敗学

ことしも俺達のISUCONの時期が来た。私がこれまでISUCONに7度参加して得た失敗学を共有する。

isucon.net

変更が反映されていることを疑わない

せっかく正しいことがやれていても、反映されていなくて何の意味もないという悲劇。

やったことあるのはサービスのrestart忘れと設定ファイルの置き場所間違い。動いているのがMariaDBなのにMySQLの所定ディレクトリへ置いていて読まれなかったやつ。

対策

  • debug logを仕込んで出力まで確認する
  • あえて設定を壊して、ちゃんと落ちることを確認する

複数の変更を同時にやってしまう

まとめて変更してベンチするとfailしたときの切り分けが難しくなる。仮に上手くいったとしても、振り返りのタイミングで結局何がスコアに効いたのか不明確で、血肉にならない。

対策

  • 1施策ずつベンチマーカーを回す

目についた/得意な/面白そうな問題に執着する

進研ゼミで見た問題はとりあえず解きたくなる。しかし、掛けた時間に見合うスコア上昇が得られるかは掛けである。そして私はその掛けに幾度となく敗れた。

これはこれで一つの楽しみ方ではある。が、競技として成績を残したいのならボトルネック以外に割いている時間はない。

対策

  • ボトルネックでないなら涙をのんで問題をスルーする

「あとちょっとで解けそう」で永遠に時間を使う

実装が終わってベンチを回すとエラー。直すと別のエラー。そしてまた別のエラー。「感覚的には9割くらい出来ているはず・・・」で何度も煮え湯を飲んできた。煮え湯美味すぎ。

対策

  • 施策には制限時間を設ける
  • 時間がきたら辞める/ペアプロに切り替える/他者にパスする

明らかにそこがネックなら、同じ課題を複数人で別々に取り組む(競争する)のもおすすめのテクニック。

俺の屍を越えてゆけ。