Разработка
Теория «разбитых окон» в разработке ПО
В результате система становится жесткой, хрупкой, неподвижной и менее устойчивой к изменениям. Каждое новое изменение сопряжено с большими затратами, увеличением заменяемых деталей и, следовательно, высоким риском отказа.
«Разбитые окна» — одна из самых известных теорий в истории криминологии. Эта теория была впервые предложена в начале 1980-х годов социологом Джорджем Л. Келлингом в его статье в журнале Atlantic. Она следовала из эксперимента, проведенного психологом Стэндфорда Филипом Зимбардо в 1969 году.
Келлинг объяснил эту теорию следующим образом:
«Представьте себе здание с (несколькими) разбитыми окнами. Если окна не будут отремонтированы как можно скорее, то, как правило, кто-то другой (например, вандал) разобьет больше окон и, в конце концов, ворвется в здание, разожжет внутри него костер».
Или, в более облегченной версии:
«Посмотрите на тротуар. На нем появляется какой-то небольшой мусор. Вскоре его становится больше. Со временем люди начинают оставлять там мешки с мусором из ресторанов или даже взламываю машины».
Если вам нравится эта тема, то по ней есть множество публикаций. Посмотрите, например, «Исправляя сломанные окна».
Впрочем, исследование, проведенное в 2019 году, показало, что опросы могут быть ненадежными, поскольку восприятие людьми беспорядка в их районе может быть переплетено с их оценкой преступности, а также с тем, как они описывают свое психическое или физическое здоровье.
Фактически, оно говорит, что стратегии охраны правопорядка и общественного здравоохранения не должны основываться на идее о том, что уже существующий беспорядок заставляет людей нарушать закон или участвовать в опасном или нездоровом поведении.
Однако такой беспорядок и нарушения, если их изучить более точно, могут дать ценную информацию о том, что происходит в районе, и повлиять на государственную политику.
Невероятно ориентированная на детали деятельность
Дизайн программного обеспечения или программирование — это безумно ориентированная на детали деятельность. В то время как разбитое окно не обязательно означает украденные у ближайшей машине колеса, взаимосвязь между различными компонентами в программном обеспечении может быть гораздо более тесной.
Когда ваша команда не в курсе деталей, общее восприятие таково, что все выходит из-под контроля, и это только вопрос времени, когда ваш проект посыпется и все перестанут заботиться о поддержке и развитии.
Если вы следили за мной в течение некоторого времени, вы уже знаете, что я не верю в перфекционизм, особенно в разработке программного обеспечения. Ни один проект не будет идеальным: в среде с высокой степенью изменчивости и постоянно меняющимися ограничениями вы просто не можете определить список обязательных условий для совершенства.
Ник Грасилла объяснил эту концепцию красивой цитатой:
Хорошая программная архитектура похожа на хорошую сантехнику, но в доме, который постоянно меняется.
Хорошая программная архитектура легко адаптируется. Она может справляться с постоянными изменениями, которые предприятия вносят в программное обеспечение, и готова к будущим итерациям и изменениям в постановке задач.
Хорошо, подождите, подождите, скажете вы. Давайте просто отвлечемся на одну секунду. Что такое теория «разбитых окон» в разработке программного обеспечения?
Никто не начинает с плохих намерений
Никто не начинает проект с намерением сделать его плохо.
В начале основной интерес представляют принципы, практика и законы, даже если их внедрение может оказаться трудным (это также зависит от навыков команды)
Внезапно «окно» разбивается.
Это может произойти из-за высокого давления или просто из-за недостатка знаний.
Люди часто ошибаются, даже Senior-разработчики. Особенно Senior-разработчики («Ваше эго — злейший враг вашей души» — Расти Эрик).
Но разбитые окна — это не просто ошибки. Требования часто меняются, и вам может потребоваться внести небольшие или большие изменения, чтобы в лучшем случае следовать намерениям.
Это нормально.
Здесь есть раздвижная дверь.
Если не принимать никаких мер, технический долг начинает расти, и окна все больше разбиваются. Проблемы распространяются в коде через имитацию («Я только что скопировал этот подход»), повторение (неверные предположения) или просто копирование + вставку.
В результате система становится жесткой, хрупкой, неподвижной и менее устойчивой к изменениям. Каждое новое изменение сопряжено с большими затратами, увеличением заменяемых деталей и, следовательно, высоким риском отказа.
Что предлагает теория «разбитых окон»
Когда плохое поведение не исправляется немедленно, это просто показывает людям, что нет ничего плохого в нарушении правил, практик или стандартов.
Отсутствие каких-либо негативных последствий расширяет внутреннее принятие беспорядка.
Срезание углов становится приемлемым, и качество начинает снижаться.
Хотя проблема может быть сложной, решения просты:
- Внедрите здоровый подход в свою команду
Senior-разработчики отчаянно хотят продемонстрировать свои сильные стороны (я, черт возьми, 10х инженер, детка!), Junior-ы — сколько они всего могут сделать. Редко один, два или три дня больше предполагаемого срока что-то значат. Вместо этого спокойный и сосредоточенный подход может спасти вас и вашу команду. - Ничего не дается бесплатно
Каждый может переписать программное обеспечение с нуля. Постоянное обслуживание и развитие гораздо сложнее и показывает, насколько вы и ваша команда хороши в разработке программного обеспечения. Рефакторинг, как и отладка, — это познавательная деятельность, позволяющая показать сильные стороны любого разработчика.