割れ窓理論をWebインフラの改善に活用し、チーム内の知識共有を促進している話

はじめに

はてなでSREをしている id:hokkai7go です。この記事は、SRE Advent Calendar 2018の13日目の記事です。 

割れ窓理論とWeb開発での実践例について

割れ窓理論(われまどりろん、Broken Windows Theory)とは、軽微な犯罪も徹底的に取り締まることで、凶悪犯罪を含めた犯罪を抑止できるとする環境犯罪学上の理論。アメリカの犯罪学者ジョージ・ケリングが考案した。「建物のが壊れているのを放置すると、誰も注意を払っていないという象徴になり、やがて他の窓もまもなく全て壊される」との考え方からこの名がある。破れ窓理論[1]壊れ窓理論[2]ブロークン・ウィンドウ理論などともいう。  [割れ窓理論 - Wikipedia] より

割れた窓が放置されていると他の窓も割られやすくなってしまいます。軽犯罪を取り締まることで重大な犯罪も抑止できるとする理論です。不安や無秩序な状態を取り除くことができるというのも大きそうです。 

 pixivさんが以前このような記事を公開されていました。devpixiv.hatenablog.com公開された当時からこの記事に書いてある内容がとても気になっていました。なぜなら私達はエンジニアで改善に向かいたいからです。また、はてなでSREとなりインフラ周りを中心としてソフトウェアと向き合うことが増えたことや、こうした活動の提案を受け入れてもらえる感じがあったためSREチームでも割れ窓を直す活動をやってみることにしたのでした。SRE以外のプロダクトチームでも実践しているようでした。

また少し視点は違いますが、労働災害防止の経験則であるハインリッヒの法則を見ても、異常(ヒヤリ・ハット)や軽微な事故を放置するのは良くないことがわかります。SREは信頼性向上に責任をもっており、障害という重大事故を防ぐための現場活動として割れ窓理論の実践は有用であるように見えました。

ハインリッヒの法則(ハインリッヒのほうそく、Heinrich's law)は、労働災害における経験則の一つである。1つの重大事故の背後には29の軽微な事故があり、その背景には300の異常が存在するというもの。

今回のAdvent Calendarでもすでに引用されていましたが、まさに下記を体現する活動であると捉えています。

ゴミが散らかったりしないように環境を保つことによってイノベーションにまっすぐ焦点を当て続け本物のエンジニアリングが前進できるようにしているのです

Betsy Beyerら著、澤田 武男ら監修 「SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム」2017年  

はてなSREチームでの割れ窓理論の実践について

はてなSREチームでは、割れ窓に関するタスクを行う一連の時間を「割れ窓タイム」と呼んでいます。現在のところ、以下のような実施方法となっています。

  • 適宜、チームメンバーは割れ窓を発見したらissueを作成し、割れ窓ラベルをつけておく
  • 割れ窓タイムの日程を確保し、取り組みやすそうなissueを週刊割れ窓マガジンという記事にリストアップしておく
  • 週に1度、1時間リモートでつないで作業時間をとる(SREチームは東京、京都の2拠点で仕事をしているからです)
  • 割れ窓タイムスタート時に、その日の割れ窓タイム用issueを立て、やることが決まればissueにその旨を書き、ログを取っていく
  • 実施後に非同期的に参加者がその日の割れ窓タイム用issueに感想やKPTにつながる内容をコメントする
  • 感想やKPT等を割れ窓タイム用issueにまとめる
  • 振り返りやすいよう、スプレッドシート上でissue URL等を一覧にしておく
  • 割れ窓タイム企画者が、企画の改善のために振り返りを行う

また、割れ窓の対象物ですが

  • SREチームで作っているソフトウェア
  • サーバの設定
  • 物理サーバやAWS上などのリソース
  • アラート

といったものを扱っています。割れ窓タイムで取り組むべき内容と、普段の仕事で取り組むべき内容の線引が難しいなとも感じており、割れ窓タイムで実施する内容のガイドラインを作ろうかと考えているところです。

効果

効果は以下にまとめました

  • 割れ窓タイムがないと取り組めないタスクに取り組むことができる
  • モブプロ、モブオペを推奨しており、知識(前提知識や、コード、過去の経緯等)の共有を図りやすい。新しく入った人のキャッチアップにも利用可能
  • 一人で取り組むには勇気がいりそうなところも、複数人で判断できるので勇気を持って取り組むことができる
  • あそこに割れ窓がありそうという認識がみんなに出てきた
  • みんなが集まっているので、タスクで困ってもすぐに相談、解決できてスピード感がある
  • これって割れ窓じゃないですか?と話す機会が増えた
  • 同じ割れ窓が発生することを検知できる
  • 普段だと時間取れないけど、割れ窓で直しましょうという会話がされるようになった

タスクの解決ができるだけでなく、知識の共有やコミュニケーションの促進につながるという点が良いと感じています。

 

今後に向けて

これまで割れ窓タイムを8回ほど実施してきたのですが、割れ窓タイムで取り組むべき内容と、普段の仕事で取り組むべき内容の線引が難しくなってきているところがあります。また割れ窓タイムのスケジューリングや、短時間で終わらないものへの対処、過去の経緯や多分に絡む物のコンテキストの説明の難しさにどう立ち向かうのがよいのかという点を今後の改善点としたいと思います。

ゴミが散らからないようにして、本物のエンジニアリングが前進していけるようにしていこうな!

こうした取り組みを一緒にやっていきたいSRE職を大募集中です。

hatenacorp.jp

 

参考文献

割れ窓理論にまつわるうわさを整理しよう。そして見えざる権力を見える化しよう。 - 廿TT

割れ窓理論を導入してWebサービスのクオリティに直結した話 - pixiv inside [archive]