19 января 2009 в 23:27

О разбитых окнах.

GTD*
Ученые установили, что за ограду с табличкой «Не входить! Велосипеды не пристегивать!» все равно входят 27% желающих срезать путь, но если рядом пристегнуть велосипед, число вырастет до 82%.

Что же это, доктор?


Это частный случай поведения, описаного в 1982 Джеймсом Вилсоном и Джорджем Киллингом в статье «Разбитое окно». Дело в том, что человек гораздо чаще нарушает установленые нормы, если видит, что до него их кто то уже нарушил. Если во дворе появятся испачканые стены, неубранный мусор, или разбитое окно, к ним как магнитом притянутся пьяные компании, брошенные автомобили, гоп-стоперы и так далее. Чтобы избежать этого, надо душить в зародыше мелкие нарушения.

Как это относится к IT?


Мне довелось поработать над довольно крупным проектом, у которого сильно хромало качество кода. Не было внутренних стандартов, очень различался уровень исполнителей. Трясина всеобщей апатии засосала меня довольно быстро, и я поплыл по течению, ляпая код абы как и насаждая новые баги во время фикса старых. Сроки в компании срывались постоянно, ни один майлстоун вовремя не сдавался.
Через некоторое время произошли кадровые перестановки, и под моим началом оказалась группа из пяти таких же апатичных программистов. Мне был очерчен фронт работ, и болото передо мной заиграло новыми оттенками уныния, ибо лиды регулярно получали по башке за срыв сроков. Но к счастью именно тогда один коллега рассказал мне про данную теорию. И вот какие выводы я из нее сделал:
  • Разработка моего отдела была выделена в отдельный модуль.
  • Вся работа с остальным продуктом была направлена через регламентированные интерфейсы.
  • В отделе был введен жесткий код-стандарт.
  • Все задачи начали проходить обязательное код-ревью.
  • Все изменения от других отделов обязательно контролировались и ревьюились.

Апатичным программистам это не сильно понравилось. Некоторые задачи заворачивались по два-три раза.
Некоторых пришлось уволить, (к счастью, у меня были такие полномочия), и набрать новых. Рефакторинг старого болота длился около года, иногда постепенно, иногда полным переписыванием части функционала с нуля (очень хорошо подумайте, прежде чем делать это!). В результате получился архитектурно стройный модуль, с четким, понятным интерфейсом, и понятной реализацией. Уровень программирования в отделе вырос, люди научились не делать грубых ошибок.

Но не все так сказочно.


На уровне отдела данный подход сработал замечательно. К сожалению, другие отделы продолжили работать по старой схеме. «Чудачества» по поводу ревью их изменений в нашем коде они терпели, но сами они предпочли работать по старинке. Поиск багов в их коде очень сильно расхолаживал и каждый срыв майлстоуна теперь уже воспринимался не как обыденность, а «мы все сделали, а из-за них опять фейл». В общем, через пару лет, я сменил работу, так и не сумев насадить культуру во всей компании, что грустно. Но тем не менее надеюсь, что мой опыт поможет другим выживать в подобных компаниях и даже менять их к лучшему :)

UPD: статья про эксперименты с «Теорией Разбитого Окна»

UPD 2: Иллюстрация от cruel_clown и Liksys
zloe_zlo @zloe_zlo
карма
38,7
рейтинг 0,0
Самое читаемое Управление

Комментарии (55)

  • НЛО прилетело и опубликовало эту надпись здесь
    • +7
      Pun intended :)
      • +1
        Учите английский, товарищи :)
        • 0
          Не понимаю надменности и снобизма в Ваших словах, право. Вы написали хорошее, исконно английское выражение, и оно уместно в контексте — отлично! Но зачем позиционировать эти знания как эксклюзивные?
          • +1
            Вы просто не застали вчерашнюю ночь, когда эта фраза огребла минусов, из-за чего и появился второй коментарий.
            • +2
              А, понятно. Не зная истории, появление такого комментария выглядит высокомерностью :) Прошу прощения за резкость.
  • +3
    как раз сейчас занят чем-то очень похожим. посмотрим хватит ли моего энтузиазма :)
  • +2
    Вы бы указали источник (сайт «Элементы»), чтобы заинтересованные могли поближе познакомиться с самим экспериментом.
    • +1
      Указал, правда я о них прочитал в SEED, это и натолкнуло на мысль написать пост.
      • +2
        Теория разбитого окна — это одно, а эксперимент нидерландских учёных (с велосипедами) — это другое.
        elementy.ru/news/430941
  • +1
    пример заставил о много задуматься, спасибо.
  • +1
    Ох, как ученые правы :) Правда жизни, как бы это не было печально.
  • 0
    Терпение товарищи, главное терпение.
  • +2
    Хорошая история. Жаль, что финал такой. Вроде бы по логике вещей, после того, как Вы наладили дело в своем отделе, вполне логичной могла бы быть очередная кадровая перестановка. Почему она не случилась?
    • +3
      Наверно потому, что болото простиралось до самых верхних уровней :(
      • 0
        Классная теория, а главное — ёмкое и краткое название. А пробовали донести эту идею до этих самых верхних уровней?
        • +1
          Не только я, но и внешние аудиторы. Безрезультатно.
          • 0
            Если на них действуют книги, то возьмусь порекомендовать «The Tipping Point» by Malcolm Gladwell. В ней в том числе рассматривается и Broken Window Theory. Ну и книга замечательна сама по себе :)
      • 0
        Насколько я понял ваш рассказ, соблюдаемость сроков не увеличилась.
        А верхним уровням плевать на качество кода, для них другие показатели важнее.
        • +1
          Соблюдаемость сроков по всему проекту, к сожалению нет. У меня не было рычагов воздействия на другие отделы.
          • 0
            А не было каких-нибудь показателей сроков по отделу?
            Например, по отдельному модулю были сроки?
            • +1
              Были, и как только тех процесс наладился, мы начали их выдерживать.
              Но на верху интересуются майлстоунами по всему проекту, а они факапились регулярно.
  • 0
    Да уж. Раба гниет с головы. Знакомая ситуация.
  • 0
    Интересно, это контора — не одна из кнопок Рунета?
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
        • НЛО прилетело и опубликовало эту надпись здесь
          • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          Если бы не подпись, прикрепил бы иллюстрацией :)
          • НЛО прилетело и опубликовало эту надпись здесь
          • НЛО прилетело и опубликовало эту надпись здесь
          • НЛО прилетело и опубликовало эту надпись здесь
            • +1
              fixed
            • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Как только прочел заголовок, сразу вспомнилась замечательная книга — Программист прагматик. Там есть глава посвященная этой теории. Так что всем кому идея понравилась советую найти книгу, она — кладезь подобных мудростей :)
  • 0
    Отличная заметка, задумался, теперь буду стараться избавиться от хлама не только в доме но и в голове) Хотя и раньше это вроде было очевидно, но сейчас особо ясно)
    P.S. Только иллюстрация наверно все же от юзера cruel_clown ;)
    • +1
      Уже поправил, хотел быстрее, но хабр 502 часто выдает
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    К сожалению как раз так и приходится работать.
    Удовольствия от работы 0.
    Что делать пока непонятно… полномочия не те. =(
    • 0
      Не стоит сдаваться. Очень, ОЧЕНЬ многое можно сделать и без полномочий. А потом в хорошей компании и полномочия появятся. А если не появятся полномочия, то появится опыт и уверенность. А это уже хороший шаг в саморазвитии. Вот такой мотивирующий комментарий получился =)
  • 0
    Думаю, это относится и к самодисциплине, а не только к работе с людьми.
    Спасибо, что просветили.
  • +3
    После нескольких абзацев вспомнил про слова сокурсника, на день после городского субботника «Мля, иду по городу — всё так чисто, окурок бросить некуда!»
  • 0
    Как раз объясняет правила в магазинах, это про обсуждение корзинок в супермаркете в соседней ветке:)
  • 0
    Каждый раз начиная новый проект, хочется продумать архитектуру грамотно, спроектировать классы… Приходит начальство и говорит — хватит ерундой заниматься, где результаты? Какое ООП??? Не заморачивай себе голову… и приходится писать код как они хотят… чтобы скорее им на стол «готовый» продукт.
  • +11
    Исследование с разбитыми окнами изначально было затеяно, чтобы исследовать вопрос преступности в неблагополучных районах одного из штатов (не помню, какого) США. Вкратце (те, кто заинтересуется, может сходить в гугл для более подробной инфы) — автомобиль с разбитым окном поставили в неблагополучном районе (читай негритянском) и разбили ему одно окно. Второе авто поставили в благополучном районе и не разбиавли ему окна. Через некоторое время первое авто разнесли вхлам. Оставили только кузов (буквально). В благополучном районе авто стояло целым, нетронутым.

    На этом эксперимент не закончился. Автомобилю в благополучном районе тоже разбили окно. Через некоторое время его постигла та же судьба, что и его собрата.

    Концепт также описывается в книге «программист прагматик» с точки зрения отношения к багам и качеству кода.

    Этот же ученый ставил эксперимент по заключению студентов в замкнутое помещение на продолжительный срок (с советскими космонавтами проводили такой же эксперимент, который скорее являлся тренингом). Советую погуглить и прочитать.

    Резюмирую — «принцип разбитых окон» очень яркий и часто проявляемый в жизни концепт. Бросьте пару пустых банок пива в лесу, и там будет свалка через пару месяцев (поройтесь у себя в голове — когда вам надо выкинуть бумажку, а баков нет, то вы ищете по обочинам скопление мусора и добавляете бумашку к нему). Нарисуйте графити на заборе, и скоро там будет целая галерея. Вовремя не исправьте пару багов, и через пару месяцев вы погрязнете в многостраничном TODO.

    Я даже думаю, что «разитые окна» являются частным случаем социальности людей, которые часто принимают решения на основе того, что уже кем-то сделано, то есть, на основе чьего-то опыта, включая свой (если кто-то поставил велосипед возле таблички «велосипеды не ставить», значит все же можно ставить велосипеды?). Потому что даже ярому защитнику природы сложно устоять перед тем, чтобы не выкинуть мусор к горе уже образовавшейся в лесу свалки.

    PS: «разбитые окна» отрицают поговорку «чисто там, где не мусорят», так как чисто там, где вовремя убирают.
    • 0
      Поправка к моему комментарию — первая машина (в неблагополучном районе которая) была просто без номеров. А вторую (в благополучном) экспериментатор сам ударил кувалдой, впоследствии чего также начался дестрой автомобиля. (не знаю, почему я ошибся; возможно или давно читал информацию по вопросу, или читал некорректный перевод на русский).

      Больше информации по вопросу — game-torrent.info/forum/viewtopic.php?t=17523
    • 0
      Напоминает фильм Das Experiment, снятый по мотивам настоящего эксперимента.
  • +2
    Так в чём проблема? Под знаком «стоянка запрещена» надо поставить раскуроченый кузов от автомобиля. И никто рядом ставить не будет. Ответ на поверхности.
  • 0
    Спасибо за отличный пост! Очень интересно.

    Я всегда стараюсь деать всё тчательно, потому что переделывать себе дороже, хотя поначалу это кажется не рациональным.
  • 0
    Неужели нельзя было наладить коммуникацию с другими командами, или хотя бы одной? Попытаться устроить всё эффективно во второй команде и т.п.?
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      И если мне не изменяет мой склероз, про ТРО я впервые прочитал именно в ней.
  • +1
    Постоянно использую метафору разбитых окон в применении к модульному тестированию — сколько бы вы не внедряли модульные тесты и TDD, стоит вам только пару раз вовремя не исправить сломавшийся тест, как они будут ломаться один за другим, и для команды этот станет нормой…
  • 0
    О! City Quest! :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.