Skip to content
sarahcocknor edited this page Dec 27, 2019 · 147 revisions

Семинар 4. Антипаттерны

Антипаттерн — это часто встречающиеся ошибки, неэффективный подход к решению задач.

Различают:

  1. Антипаттерны разработки - частые ошибки при кодировании (спагетти-код);
  2. Архитектурные антипаттерны - проблемы структуры системы (раздувание интерфейса);
  3. Организационные антипаттерны - проблемы управления проектом (управление грибами);
  4. Антипаттерны среды - проблемы социальной модели организации, и, как следствие, снижение продуктивности рабочего персонала (город ларьков).

В задании необходимо:

Привести пример каждого из 4 видов антипаттернов с пояснением, почему данный пример является антипаттерном.

В помощь:

Осторожно! Многие анти-паттерны в интернете формулируются ярко, но грубо. Плюс зачастую вообще наблюдается переход на неприемлемую для нас ненормативную лексику

ИДБ-16-05

1 Анисимова Полина
2 Васильева Анастасия

  • Антипаттерны разработки – Магическая кнопка. Антипаттерн, появляющийся при недостатке абстракции, когда множество различных действий сваливается в кучу в неподходящем месте, например в обработчике нажатия на кнопку, вместо того чтобы быть распределёнными по подходящим классам и функциям. Этим страдают на всех языках с графическим редактором – C#, делфи.
  • Архитектурные антипаттерны – Членовредительство. Излишнее «затачивание» объекта под определенную очень узкую задачу так, что объект не способен будет работать с другими схожими задачами. В следствии чего может появиться очень много объектов с однотипными задачами.
  • Организационные антипаттерны - Аврал! Применяется не ранее, чем за несколько дней до сдачи проекта. При этом программисты начинают в срочном порядке генерировать код без комментариев и содержащий в себе связки бомб с детонаторами.
  • Антипаттерны среды - Экономия. Так как заказчик часто желает получить золотой замок за цену железного ведра, то встает вопрос об экономии. И заказчик решает вместо того, чтобы сократить функционал и требования, лучше сократить проектирование, прототипирование, внутренние

3 Гёнен Дарья
4 Глазунов Николай

  1. Антипаттерн разработки - Жесткий код (Hard code) Избыточно сильная привязка программного кода к конкретной программной, аппаратной или системной конфигурации.
  2. Архитектурный антипаттерн - Тупик (Dead End) Модификация повторно используемого программного компонента, поддержка которого уже была прекращена ранее, что влечет за собой необходимость возобновлять его сопровождение.
  3. Организационный антипаттерн - Охота на ведьм (Witch Hunt) Попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров.
  4. Антипаттерн среды - Босые дети (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

5 Дмитренко Сергей
6 Дьяков Александр
7 Есипова Анна

  1. Антипаттерны разработки - Мягкое кодирование (Soft code). Мягкое кодирование — параноидальная боязнь жёсткого кодирования. Это приводит к тому, что незахардкожено и настраивается абсолютно всё, что делает конфигурацию невероятно сложной и непрозрачной. Этот анти-паттерн является вторым концом палки о жёстком кодировании и поэтому тоже является опасным. Во-первых, при разработке много ресурсов уходит на реализацию возможности настроек абсолютно всего. Во-вторых, развёртывание такой системы повлечет так же дополнительные затраты.

  2. Архитектурные антипаттерны - Эффект внутренней платформы (Inner-platform effect). Тенденция сложных программных систем изобретать заново возможности платформы, на которой они работают, или языка, на котором они написаны. Например, использование базы данных как очереди задач, переизобретение дискового буфера.

  3. Организационные антипаттерны - Тёплое тело (Warm Bodies). Xеловек, чей вклад в проект под сомнением. Проявляется в отсутствии конкретных действий для достижения целей проекта.

  4. Антипаттерны среды - Дедовщина (Geek Hazing). Сложившаяся в организации неформальная система иерархических отношений между сотрудниками имеющими большой стаж работы в организации и "новичками", связанная с дискриминацией последних. Проявляется в перекладывании большого объема тяжелой работы или ответственности на новичков.

8 Касимовский Алексей
9 Колгатин Денис

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

  2. Архитектурные антипаттерны - "Дымоход" (Stovepipe System) - редко поддерживаемая сборка плохо связанных компонентов Приводит к частым ошибкам и невозможности универсально запускать приложение на всех устройствах.

  3. Организационные антипаттерны – "Охота на ведьм": попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров.

  4. Антипаттерны среды - Увлечение модными словами (Buzzword Mania) Неуместное и нецелевое использование модных слов, которое может вводить окружающих в заблуждение. Поэтому важно вести беседу на понятном и однозначно интерпретируемом языке, чтобы избегать недопониманий и ущерба в следствии него.

10 Кулаков Константин

  1. Антипаттерны разработки - Классы Бога. Классы, контролирующие множество других классов, имеющие много зависимостей и много ответственности;

  2. Архитектурные антипаттерны - Затычка на ввод данных (Input kludge). Забывчивость в спецификации и выполнении поддержки возможного неверного ввода. Приводит к возникновению ошибок и остановкам программы. Антипаттерн устраняется продуманным алгоритмом проверки (валидации) пользовательского ввода.

  3. Организационные антипаттерны – "Охота на ведьм": попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров.

  4. Антипаттерны среды - Дедовщина (Geek Hazing). Сложившаяся в организации неформальная система иерархических отношений между сотрудниками имеющими большой стаж работы в организации и "новичками", связанная с дискриминацией последних. Проявляется в перекладывании большого объема тяжелой работы или ответственности на новичков.

11 Лаверычев Максим

  1. Антипаттерны разработки - Таинственный код (Cryptic code). Подразумевает использование аббревиатур вместо мнемоичных имён. Приводит к нечитаемости кода. В случае ухода автора этого кода из проекта/компаний такой код может стать "головоломкой" для остальных.

  2. Архитектурные антипаттерны - Затычка на ввод данных (Input kludge). Забывчивость в спецификации и выполнении поддержки возможного неверного ввода. Приводит к возникновению ошибок и остановкам программы. Антипаттерн устраняется продуманным алгоритмом проверки (валидации) пользовательского ввода.

  3. Организационные антипаттерны - Привязка к поставщику (Vendor lock-in). Жёсткая привязка к поставщику. Опасный подход, который может приводить к необоснованному росту цены изделий/услуг поставщика, делает собственную организацию более зависимой от сторонних факторов. Пример: Sukhoi SuperJet - большая часть компонентов поставляется ограниченным числом зарубежными компаниями, использование сторонних компонентов не предусматривается -> санкции привели к перебоям с поставками -> снижение эффективности использования этих самолетов (долгий простой на ремонте) -> отказ от новых заказов.

  4. Антипаттерны среды - "Босые дети" (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

12 Ларин Николай
13 Лисица Захар

  1. Антипаттерны разработки - Жёсткое кодирование (Hard code). Жёсткое кодирование — внедрение различных данных об окружении в реализацию. Например — различные пути к файлам, имена процессов, устройств и так далее. Главная опасность, исходящая от этого анти-паттерна — непереносимость. В системе разработчика код будет исправно работать до перемещения или переименования файлов, изменения конфигурации устройств. На любой другой системе код может вовсе не заработать сразу же.
  2. Архитектурные антипаттерны - Перестыковка (Re-Coupling): процесс внедрения ненужной зависимости. Этот процесс повышает затраты на обслуживание и является потенциальным источником новых ошибок.
  3. Организационные антипаттерны - Раздутый элегантизм (Creeping elegance) - непропорциональное улучшение красивости кода в ущерб функциональности и качеству системы.
  4. Антипаттерны среды - Потёмкинские деревни: обозначает несуществующие изменения в модели компании, которые происходят лишь для вида.

14 Мавлетдинов Ринат

  1. Антипаттерны разработки - Коммит-убийца - это внесение отдельных изменений в систему контроля версий без проверки влияния их на другие части программы. Как правило, после подобных коммитов работа коллектива парализуется на время исправления проблем в местах, которые ранее работали безошибочно. Наиболее часто встречается в игровой индустрии, о которой писал в предыдущих семинарах, когда после фикса багов всплывают сотни других.
  2. Архитектурные антипаттерны - Функции для галочки. Превращение программы в конгломерат плохо реализованных и не связанных между собой функций (как правило, для того, чтобы заявить в рекламе, что функция есть). Как пример опять же можно привести игровую индустрию, когда в играх вводят фарм ради фарма. Получение одной экипировки просто ради того, чтобы потом получить экипировку чуть лучше, без какой либо цели.
  3. Организационные антипаттерны - Драконовские меры. Неоправданно жесткий стиль управления. Примером могут быть требования к разработчикам находиться на рабочем месте в офисе четко по графику, с наказаниями за малейшие опоздания, при том что выполнение работы вообще не требует присутствия человека в офисе.
  4. Антипаттерны среды - Потёмкинские деревни. Несоответствие реальности. Примерами могут служить поездки наших уважаемых президента и премьер-министра по стране.

15 Маслихин Вадим

  • Антипаттерны разработки - Классы Бога. Классы, контролирующие множество других классов, имеющие много зависимостей и много ответственности;
  • Архитектурные антипаттерны - Эффект внутренней платформы. Тенденция сложных программных систем изобретать заново возможности платформы, на которой они работают, или языка, на котором они написаны;
  • Организационные антипаттерны - Преждевременная оптимизация. Оптимизация, проводимая до того, как у вас есть вся информация, необходимая для принятия взвешенных решений по поводу того, где и как нужно её проводить;
  • Антипаттерны среды - Байкшеддинг. Склонность тратить время на обсуждение тривиальных и субъективных вещей.

16 Морозов Виктор

  1. Антипаттерны разработки - Божественный объект - антипаттерн объектно-ориентированного программирования, описывающий объект, который хранит в себе «слишком много» или делает «слишком много».
  2. Архитектурные антипаттерны - Состояние гонки -ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Своё название ошибка получила от похожей ошибки проектирования электронных схем.
  3. Организационные антипаттерны - Золотой ребёнок - «Золотой ребенок» существует в ситуациях, когда менеджер или человек, занимающий руководящую должность, предоставляет особую ответственность, возможность, признание или вознаграждение члену своей команды на основе личных взаимоотношений с человеком и вопреки его действительным действиям. Пока всех раздражает «Золотое дитя», настоящая проблема заключается в менеджере.
  4. Антипаттерны среды - Потёмкинские деревни - обозначает изменение в модели компании, которой по настоящему не существует, но для вида она нужна.

17 Ружейников Михаил

  1. Антипаттерны разработки - Равиоли-код (Ravioli code, или «пельмени») - объекты настолько «склеены» между собой, что практически не допускают рефакторинга;
  2. Архитектурные антипаттерны - Раздувание ПО (Software bloat) - разрешение последующим версиям системы требовать все больше и больше ресурсов;
  3. Организационные антипаттерны - Замыкание на поставщике (Vendor lock-in) - исполнение системы таким образом, что она оказывается привязанной к её поставщику;
  4. Антипаттерны среды - Босые дети (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

18 Семионова Анастасия

  1. Антипаттерны разработки - Мягкое кодирование (Soft code): Патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование. Жесткий код (Hard code) Избыточно сильная привязка программного кода к конкретной программной, аппаратной или системной конфигурации.

  2. Архитектурные антипаттерны - Бензиновая фабрика (Gas factory) - необязательная сложность дизайна. Зачем усложнять и без того тяжелый труд?.

  3. Организационные антипаттерны - Ползущий улучшизм (Creeping featurism): добавление новых улучшений в ущерб суммарному качеству системы.

  4. Антипаттерны среды – Потемкинские деревни: обман с явной целью приукрасить положение для создания видимости благополучия, процветания.

19 Соловьева Людмила
20 Тараненко Андрей
21 Фролов Юрий
22 Чистякова Евгения

Антипаттерны разработки - Френд-зона (Friend zone): неуместное использование дружественных классов и дружественных функций в языке C++.

Архитектурные антипаттерны - Золушкина туфелька: попытка «натянуть» на объект уже имеющийся малоподходящий по смыслу интерфейс вместо создания нового.

Организационные антипаттерны - Рыцарь на белом коне (Knight in shining armor, K ISA): когда на сцене появляется человек, который пытается починить все, не сообщая никому, что он сделал и почему.

Антипаттерны среды - Дедовщина (Geek Hazing): Новичкам назначаются простые задачи, а не более сложные задачи, из которых они могут извлечь уроки. Проблема в том,что новички таким образом не совершенствуются, либо делают это очень медленно.

ИДБ-16-06

1 Абрамов Алексей

Антипаттерны разработки - Поток лавы. Системное нарушение принципов разработки, которое со временем приводит к тому, что проект начинает состоять из неподдерживаемых кусков кода, а доработка проекты вынуждает писать новые слабо поддерживаемые куски кода. Архитектурные антипаттерны -Дымоход. Редко поддерживаемая сборка плохо связанных компонентов.
Организационные антипаттерны - Тёплое тело. Человек, чей вклад в проект под сомнением. Антипаттерны среды - Лягушка в кипятке. С человеком происходит аналогичная ситуация, пока он не чувствует, что опасность уже близко. Синдром лягушки в кипятке – это процесс постепенного эмоционального выгорания, когда человек сталкивается со сложностями в жизни, но не предпринимает ничего, чтобы освободиться. Просто ждет, чем же все закончится. Так он выжидает годами, живет в токсичной атмосфере, которая отравляет его жизнь.(жиза) 2 Агапов Даниил

Антипаттерны разработки – Золотой молоток. Сильная уверенность в том, что любимое решение универсально применимо. Название происходит от поговорки «когда в руках молоток, все проблемы кажутся гвоздями» Архитектурные антипаттерны – Большой комок грязи.программа с нераспознаваемой структурой Организационные антипаттерны –Функции для галочки. Превращение программы в конгломерат плохо реализованных и не связанных между собой функций Антипаттерны среды – Чрезмерное усложнение. Расходы ресурсов, что делает проект более устойчивым и сложным, чем это необходимо

3 Архипов Семён

Антипаттерн разработки - волшебные числа - использование числовых констант без объяснения их смысла. Зачастую при переносе формулы в код программист просто пишет константы в виде чисел и в итоге их происхождение абсолютно неясно для других. Антипаттерн архитектуры - Посредник - Большую часть методов класс делегирует другому классу. При таком подходе класс становится излишним. Организационный антипаттерн - Чайка-менеджер - стиль управления, при котором менеджер, внезапно налетев на объект, поднимает много шума, а затем так же внезапно улетает, оставив после себя полный беспорядок, с которым должны разбираться другие. Для данного стиля управления характерно принятие руководителем поспешных решений касательно вопросов, в которых он недостаточно хорошо осведомлён и компетентен. Термин стал популярен благодаря шутке из книги Кена Бланшераruen 1985 года «Лидерство и одноминутный менеджерruen»: «Менеджеры-чайки прилетают, создают много шума, гадят на всех и улетают». Такой подход плохо сказывается на организованности, авторитете начальства и рабочей атмосфере. Антипаттерн среды - Лягушка в кипятке - Сутью эксперимента является предположение о том, что если лягушку поместят в кипящую воду, она выпрыгнет, но если она будет находиться в холодной воде, которая медленно нагревается, то она не будет воспринимать опасность и будет медленно погибать. История часто используется как метафорическое отображение неспособности людей реагировать на значительные изменения, которые происходят постепенно. Такой подход приводит к тому, что организация оказывается в неблагоприятной ситуации без какой либо возможности подготовится к ней или ее избежать

5 Бабаян Эрнест

Антипаттерны разработки - Мягкое кодирование (Soft code): патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование. Недостатки: Во-первых, при разработке много ресурсов уходит на реализацию возможности настроек абсолютно всего. Во-вторых, развёртывание такой системы повлечет так же дополнительные затраты.

Архитектурный антипаттерн - Состояние гонки: ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Недостатки: Состояния гонки могут давать непредсказуемые результаты, и зачастую их сложно выявить.

Организационные антипаттерны – Охота на ведьм: попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров.

Антипаттерны среды - Синдром варёной лягушки: сутью эксперимента является предположение о том, что если лягушку поместят в кипящую воду, она выпрыгнет, но если она будет находиться в холодной воде, которая медленно нагревается, то она не будет воспринимать опасность и будет медленно погибать. История часто используется как метафорическое отображение неспособности людей реагировать на значительные изменения, которые происходят постепенно. 6 Беседин Богдан

  1. Антипаттерны разработки - Класс Бога. Классы, контролирующие множество других классов, имеющие много зависимостей и много ответственности. Классы Бога разрастаются до тех пор, пока не превращаются в кошмар поддержки. Они нарушают принцип одной ответственности, с ними тяжело проводить юнит-тесты, отлаживать и документировать. Можно избежать разбивая ответственность по мелким классам, с единственной ответственностью, которая чётко определена, юнит-тестируется и задокументирована.

  2. Архитектурные антипаттерны - Состояние гонки. Ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода.Из-за неконтролируемого доступа к общей памяти состояние гонки может приводить к совершенно различным ошибкам, которые могут проявляться в непредсказуемые моменты времени, а попытка повторения ошибки в целях отладки со схожими условиями работы может оказаться безуспешной. Основными последствиями могут быть:утечки памяти, ошибки сегментирования, порча данных, уязвимости, взаимные блокировки, утечки других ресурсов.

  3. Организационные антипаттерны - Разработка комитетом (Design by committee). Когда группа участников объединяется для создания чего-либо (обычно технического устройства или стандарта) при плохом или некомпетентном руководстве. Отличительными чертами «разработанного комитетом» проекта являются излишняя сложность, неполнота, логические противоречия, банальность и отсутствие целостной структуры. Такие продукты и стандарты становятся объединением разрозненной функциональности или плохо взаимодействующих составных частей (поскольку создатели этих модулей или разделов не задумывались о качественном взаимодействии с другими участниками проекта). Обосновывает необходимость единого системного архитектора.

  4. Антипаттерны среды - Дедовщина (Geek Hazing) Новичкам назначаются простые задачи, а не более сложные задачи, из которых они могут извлечь уроки. Проблема в том,что новички таким образом не совершенствуются, либо делают это очень медленно.

7 Будагян Софья

  1. Антипаттерны разработки - Таинственный код (Cryptic code) - использование аббревиатур вместо понятных имен
  2. Архитектурные антипаттерны - Большой комок грязи(Big ball of mud) - программа с не распознаваемой структурой
  3. Организационные антипаттерны - Аналитический паралич (Analysis paralysis) - большие затраты на анализ и проектирование, что приводит к закрытию проекта до начала его реализации.
  4. Антипаттерны среды - Босые дети (Shoeless children) - игнорирование внутренних потребностей компании и распределении всех доступных ресурсов на реализацию внешних проектов.

8 Воронин Андрей

  1. Антипаттерны разработки - Висящие концу: Интерфейс, большинство методов которого бессмысленны и реализуются "пустышками".
  2. Архитектурные антипаттерны - Дымоход: редко поддерживаемая сборка плохо связанных компонентов.
  3. Организационные антипаттерны - Расползание рамок: потеря контроля над разрастанием проекта.
  4. Антипаттерны среды - Потёмкинские деревни: обозначает изменение в модели компании, которой по настоящему не существует, но для вида она нужна.

9 Галиулин Фуркат

  1. Антипаттерны разработки - Божественный объект - антипаттерн объектно-ориентированного программирования, описывающий объект, который хранит в себе «слишком много» или делает «слишком много».
  2. Архитектурные антипаттерны - Состояние гонки -ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Своё название ошибка получила от похожей ошибки проектирования электронных схем.
  3. Организационные антипаттерны - Золотой ребёнок - «Золотой ребенок» существует в ситуациях, когда менеджер или человек, занимающий руководящую должность, предоставляет особую ответственность, возможность, признание или вознаграждение члену своей команды на основе личных взаимоотношений с человеком и вопреки его действительным действиям. Пока всех раздражает «Золотое дитя», настоящая проблема заключается в менеджере.
  4. Антипаттерны среды - Потёмкинские деревни - обозначает изменение в модели компании, которой по настоящему не существует, но для вида она нужна.

11 Гуров Александр

Антипаттерн разработки: Лодочный якорь - Сохранение более не используемой части системы. (Повышает сложность понимание системы в дальнейшем, но при этом не имеет никакого смысла)

Архитектурный антипаттерн: Бензиновая фабрика - Необязательная сложность дизайна. (Бессмысленное повышение сложности понимания кода)

Организационный антипаттерн: Я тебе это говорил - игнорирование мнения эксперта. (Приводит к возникновения проблем, о которых было известно зарание)

Антипаттерн среды: Город ларьков - каждый отдел вырабатывает свой собственный механизм обмена информацией. (Возникают трудности в понимании отделам друг друга)

12 Ильин Даниил

Антипаттерн разработки: Проблема йо-йо (Yo-yo problem): Чрезмерная размытость сильно связанного кода (например, выполняемого по порядку) по иерархии классов. В результате код становится не читаемым.

Архитектурный антипаттерн: Сохранение или смерть (Save or die): Сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения; приводит к тому, что в случае отказа в программе эти данные будут утеряны.

Организационный антипаттерн: Дойная корова (Cash cow): когда при наличии продукта, приносящего выгоду без существенных вложений, не вкладываются средства в развитие и разработку новых продуктов. В результате организация стагнирует и рискует быть поглощенной более крупной организаций.

Антипаттерн среды: Город ларьков (Kiosk City) — каждый отдел вырабатывает свой собственный механизм обмена информацией. В результате работа над проектом ведётся намного дольше из-за отсутствия связи между отделами.

13 Консулова Анна

15 Лякишева Марина

Антипаттерн разработки: Френд-зона (Friend zone): Неуместное использование дружественных классов и дружественных функций в языке C++. Может вызывать ошибки и ухудшать функциональность.

Архитектурный антипаттерн: Мышиная возня: Неоправданное создание множества мелких и абстрактных классов для решения одной конкретной задачи более высокого уровня. Вызывает путаницу в классах, непонятно что для чего создавалось, зачем использовать и т.д

Организационный антипаттерн: Я тебе это говорил (I told you so): игнорирование мнения эксперта. :)

Антипаттерн среды: Город ларьков (Kiosk City) — каждый отдел вырабатывает свой собственный механизм обмена информацией. Это как изобретать велосипед. Ненужный труд, который мешает отделам взаимодействовать между собой быстро и удобно.

16 Роменкова Маргарита

  1. Антипаттерны разработки - Длинный список параметров. Подразумевает большое количество аргументов метода или функции. Указывает на возможные проблемы с разграничением ответственности, сложно читаются.

  2. Архитектурные антипаттерны - Божественный объект (God object). Концентрация слишком большого количества функций в одной части системы (классе). Сложно рефакторить, отлаживать и переиспользовать части системы. Сложно внедрить новые компоненты системы.

  3. Организационные антипаттерны - Раздутый улучшизм (Creeping featurism) Добавление новых улучшений в ущерб суммарному качеству системы. Добавление улучшений, которые не были инициированы необходимостью или бизнес-задачами увеличивает сроки и затраты на разработку системы.

  4. Антипаттерны среды - Сапожник без сапог (Shoeless children) Отсутствие необходимых ресурсов, например, компания, которая предоставляет высокотехнологичные услуги, но при этом не обладает необходимым оборудованием. Это приводит к тому, что качество услуг падает, т.к. разработчик не может проверить продукт в условиях окружения пользователя.

17 Рубцов Леонид

19 Саберов Ринат

Антипаттерн разработки - Жесткий код (Hard code) Избыточно сильная привязка программного кода к конкретной программной, аппаратной или системной конфигурации. Архитектурный антипаттерн - Тупик (Dead End) Модификация повторно используемого программного компонента, поддержка которого уже была прекращена ранее, что влечет за собой необходимость возобновлять его сопровождение. Организационный антипаттерн - Охота на ведьм (Witch Hunt) Попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров. Антипаттерн среды - Босые дети (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

23 Чистякова Ксения

24 Якубова Вероника

25 Горланова Анна

  • Антипаттерны разработки: Вызов предка (Call super) - для добавления функциональности методу класса-потомка нужно вызвать эти же методы класса-предка.

  • Архитектурные антипаттерны: Волшебная кнопка (Magic pushbutton) - выполнение результатов действий пользователя в виде неподходящего интерфейса.

  • Организационные антипаттерны: Я тебе это говорил (I told you so) - игнорирование мнения профессионала.

  • Антипаттерны среды: Новое платье короля (Emperor’s New Clothes)

ИДБ-16-07

1 Бада Олуватимилехин

  • Антипаттерны разработки- Френд-зона (Friend-zone) Неуместное использование дружественных классов и дружественных функций в языке C++.

  • Архитектурные антипаттерны - Бензиновая фабрика. Необязательная сложность дизайна.

  • Организационные антипаттерны - Раздутый улучшизм. Добавление новых улучшений в ущерб суммарному качеству системы.

  • Антипаттерны среды - Синдром вареной лягушки. Сутью эксперимента является предположение о том, что если лягушку поместят в кипящую воду, она выпрыгнет, но если она будет находиться в холодной воде, которая медленно нагревается, то она не будет воспринимать опасность и будет медленно погибать. История часто используется как метафорическое отображение неспособности людей реагировать на значительные изменения, которые происходят постепенно.
    2 Бойкова Алена

  1. Антипаттерны разработки - Таинственный код (Cryptic code) – использование аббревиатур вместо понятных имён. В следствии чего можно запутаться в своем же коде.
  2. Архитектурные антипаттерны - Бензиновая фабрика (Gas factory) - необязательная сложность дизайна. Зачем усложнять и без того тяжелый труд?
  3. Организационные антипаттерны - Тёплое тело (Warm Bodies) - человек, чей вклад в проект под сомнением. Проявляется в отсутствии конкретных действий для достижения целей проекта.
  4. Антипаттерны среды - Дедовщина (Geek Hazing) - сложившаяся в организации неформальная система иерархических отношений между сотрудниками, имеющими большой стаж работы в организации, и "новичками", связанная с дискриминацией последних. Проявляется в перекладывании большого объема тяжелой работы или ответственности на новичков.
    3 Войтенко Вадим
  5. Антипаттерны разработки - Спагетти-код: плохо спроектированная, слабо структурированная, запутанная и трудная для понимания программа, особенно содержащая много операторов GOTO (особенно переходов назад), исключений и других конструкций, ухудшающих структурированность.
  6. Архитектурные антипаттерны - Сохранение или смерть: сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения; приводит к тому, что в случае отказа в программе эти данные будут утеряны.
  7. Организационные антипаттерны - Я тебе это говорил: игнорирование мнения эксперта.
  8. Антипаттерны среды - Модные слова: особый род новых слов и речевых конструкций, часто используемых в коммерции и профессиональной деятельности для оказания впечатления осведомлённости говорящего и для придания чему-либо образа важности. Из-за неумеренного употребления смысл слова размывается, и «модные слова» можно встретить даже в контексте, не имеющем отношения к исходному значению.

4 Гепнер Иван

  1. Антипаттерны разработки - Мягкое кодирование (Soft code): Патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование. Жесткий код (Hard code) Избыточно сильная привязка программного кода к конкретной программной, аппаратной или системной конфигурации.

  2. Архитектурные антипаттерны - Бензиновая фабрика (Gas factory) - необязательная сложность дизайна. Зачем усложнять и без того тяжелый труд?.

  3. Организационные антипаттерны - Ползущий улучшизм (Creeping featurism): добавление новых улучшений в ущерб суммарному качеству системы.

  4. Антипаттерны среды – Потемкинские деревни: обман с явной целью приукрасить положение для создания видимости благополучия, процветания.

5 Демьянок Никита Антипаттерн разработки: Золотой молоток (Golden hammer) Антипаттерн проектирования, заключающийся в использовании одного и того же решения везде. Золотой молоток также известен под названиями: закон инструмента (The law of the instrument), молоток Маслоу (Maslow's hammer), «молоточек» ( Gavel).

Антипаттерн архитектуры: Божественный объект. Этот анти-паттерн, который довольно часто встречается у ООП разработчиков. Такой объект берет на себя слишком много функций и/или хранит в себе практически все данные. В итоге мы имеем непереносимый код, в котором, к тому же, сложно разобраться. Так же, подобный код довольно сложно поддерживать, учитывая, что вся система зависит практически только от него. Причинами являются — некомпетентность разработчика, взятие одним разработчиком большой части работы (особенно, когда размер работы «превышает» уровень опыта этого разработчика). Бороться с таким подходом надо — разбивать задачи на подзадачи, с возможностью решения этих подзадач различными разработчиками.

Антипаттерн среды: Синдром вареной лягушки. Сутью эксперимента является предположение о том, что если лягушку поместят в кипящую воду, она выпрыгнет, но если она будет находиться в холодной воде, которая медленно нагревается, то она не будет воспринимать опасность и будет медленно погибать. История часто используется как метафорическое отображение неспособности людей реагировать на значительные изменения, которые происходят постепенно.
6 Дерменжи Мария

  • Антипаттерны разработки – Вызов предка (Call super): Для реализации прикладной функциональности методу класса-потомка требуется в обязательном порядке вызывать те же методы класса-предка. Является антипаттерном, так как при данном методе появляется излишняя нагрузка как кода, так и времени и сил, уходящих на писание кода.
  • Архитектурные антипаттерны – Состояние гонки (Race hazard, Race condition): непредвидение возможности наступления событий в порядке, отличном от ожидаемого. Является антипаттерном, так как из-за непродуманного фрагмента системы, отвечающего за порядок действий в данном методе результат становится провальным.
  • Организационные антипаттерны – Я тебе это говорил (I told you so): игнорирование мнения эксперта. Является антипаттерном, так как данная проблема появляется из-за неуважения к коллегам либо из-за безучастия в рабочем процессе.
  • Антипаттерны среды – Поспешишь — людей насмешишь (Fools Rush In). Является антипаттерном по причине нерационального тайм-менеджмента из-за которого все сотрудники становятся под ударом, например из-за приближения дедлайна либо желания уйти с работы пораньше.

7 Искандерова Лорена

  • Антипаттерны разработки - Выполнение результатов действий пользователя в виде неподходящего (недостаточно абстрактного) интерфейса. Например, в системах типа Delphi это написание прикладной логики в обработчиках нажатий на кнопку.
  • Архитектурные антипаттерны - Инверсия абстракции (Abstraction inversion) - сокрытие части функциональности от внешнего использования, с расчетом на то, что никто не будет его использовать
  • Организационные антипаттерны - Сваливание расходов (Cost migration) - перенос расходов на проект к уязвимому отделу или бизнес-партнёру
  • Антипаттерн среды - Потёмкинские деревни — исторический миф о бутафорских деревнях, которые якобы были выстроены по указанию князя Потёмкина вдоль маршрута Екатерины II во время её поездки в 1787 году.

8 Казюканов Егор

  • Антипаттерны разработки – Паблик Морозов. Класс, открывающий доступ к защищенным данным и методам.
  • Архитектурные антипаттерны – Сохранение или смерть. Сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения, приводящее к тому, что в случае отказа в программе эти данные будут утеряны.
  • Организационные антипаттерны – Раздутый улучшизм. Добавление новых улучшений в ущерб суммарному качеству системы.
  • Антипаттерны среды – Город ларьков. Каждое подразделение, отдел или департамент обменивается информацией собственным способом, таким образом накапливая непонимание между подразделениями.

9 Кузиев Джамшид
10 Майоров Павел

  • Антипаттерны разработки - Мягкое кодирование (Soft code):Патологическая боязнь жёсткого кодирования, приводящая к тому, что настраивается всё что угодно, при этом конфигурирование системы само по себе превращается в программирование.
  • Архитектурные антипаттерны - Бензиновая фабрика. Необязательная сложность дизайна.
  • Организационные антипаттерны - Единственный знающий человек (Single head of knowledge, SHOK) - когда жизненно важными для проекта сведениями или навыками обладает только один человек в команде, с его уходом работа останавливается.
  • Антипаттерны среды – Потемкинские деревни: обман с явной целью приукрасить положение для создания видимости благополучия, процветания.

11 Махмудов Бобурбек

  • Антипаттерны разработки - Сокрытие ошибок. Перехват ошибок до того как они могут быть показаны пользователю, после чего пользователю либо ничего не выводится, либо выводится бесмысленное сообщение.
  • Архитектурные антипаттерны - Состояние гонки (Race condition): непредвиденное наступление событий в порядке, отличном от ожидаемого, как правило является результатом не граммотного использования многопоточности.
  • Организационные антипаттерны - Рыцарь на белом коне (Knight in shining armor): когда на сцене появляется человек, который пытается починить всё, не сообщая никому, что он сделал и почему.
  • Антипаттерны среды - Непоколебимое мужество (Dunkirk Spirit). Успех достигается не смотря на отвратительное управление, за счёт рядовых сотрудников, которые с мужеством справляются с задачей, но при этом руководство не отдаёт им должного.

12 Мельникова Влада
13 Мулляминов Роман

  • Антипаттерны разработки – Паблик Морозов. Класс, открывающий доступ к защищенным данным и методам.
  • Архитектурные антипаттерны -Магическое число — константы, используемые в коде, но которые не несут никакого смысла без соответствующего комментария.
  • Организационные антипаттерны - Ползущий улучшизм (Creeping featurism): добавление новых улучшений в ущерб суммарному качеству системы.
  • Антипаттерны среды - Босые дети (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

14 Попова Мария Антипаттерны разработки – Божественный объект - большая часть функциональности программы концентрируется в одном объекте. Основная проблема - усложняется процедура внесения изменений, так как на божественный объект ссылается слишком много других объектов. Архитектурные антипаттерны – Членовредительство - Излишнее «затачивание» объекта под определенную очень узкую задачу таким образом, что он не способен будет работать с никакими иными, пусть и очень схожими задачами. В результате, для решения этих задач придется писать другие объекты, что повысит объем и сложность кода. Кроме того, уменьшается возможность повторного использования данного объекта. Организационные антипаттерны – Аналитический паралич — чрезмерное анализирование ситуации, так что решение или действие никогда не предпринимаются. Чаще всего проявляется при водопадной модели с очень длительными этапами планирования проекта, сбора требований, проектирования и моделирования данных. Основной причиной такой проблемы является недостаток опыта менеджеров и аналитиков. Антипаттерны среды – Город ларьков — каждый отдел вырабатывает свой собственный механизм обмена информацией. При этом усложняется взаимодействие между отделами, уменьшается скорость выполнения работы.

15 Сергеев Андрей

Антипаттерны разработки - божественный объект, который располагает большое количество функционала в одном классе. Программисту лучше разделять функции по классам, и потом вызывать их, это гораздо лучше. 2. Архитектурные антипаттерны - Отсутствие реализации ввода правильных данных. В Системе всегда должен быть правильный ввод данных, допустим введёшь отрицательное выражение, где не предусматривается и выйдет ошибка. 3. Организационные антипаттерны - Сомнение что вклад 1 человека присутствует в проекте. В команде каждый должен вносить свой вклад в результат. 4. Антипаттерны среды - Хаос в компании, идёт не разбериха, что соответственно снижает kpi компании.

16 Скворцов Антон

  • Антипаттерны разработки - Класс Бога. Классы, контролирующие множество других классов, имеющие много зависимостей и много ответственности. Классы Бога разрастаются до тех пор, пока не превращаются в кошмар поддержки. Они нарушают принцип одной ответственности, с ними тяжело проводить юнит-тесты, отлаживать и документировать. Можно избежать разбивая ответственность по мелким классам, с единственной ответственностью, которая чётко определена, юнит-тестируется и задокументирована.
  • Архитектурные антипаттерны -Дымоход. Редко поддерживаемая сборка плохо связанных компонентов
  • Организационные антипаттерны – "Охота на ведьм": попытка найти проблему неуспеха проекта только в некомпетентности конкретных руководителей либо исполнителей, и решить её исключительно сменой команды разработчиков, либо менеджеров.
  • Антипаттерны среды - Босые дети (Shoeless children) Суть данного антипаттерна состоит в игнорировании внутренних потребностей компании и распределении всех доступных ресурсов на реализацию текущих внешних проектов.

17 Слученкова Мария

  • Антипаттерны разработки – Страх перед добавлением классов. Вера в то, что увеличение количества классов усложняет дизайн, приводит к страху перед добавлением новых классов или разбитием больших классов на мелкие.Добавление классов уменьшает сложность. Распутать несколько мелких клубков пряжи проще, чем один крупный.
  • Архитектурные антипаттерны - Перестыковка (Re-Coupling): Процесс внедрения ненужной зависимости.
  • Организационные антипаттерны - Единственный знающий человек (Single head of knowledge, SHOK): когда жизненно важными для проекта сведениями или навыками обладает только один человек в команде; с его уходом работа останавливается;
  • Антипаттерн среды - Модные слова (также гламурная лексика и «умные слова», англ. buzzword) — особый род новых слов и речевых конструкций, часто используемых в коммерции, пропаганде и профессиональной деятельности для оказания впечатления осведомлённости говорящего и для придания чему-либо образа важности, уникальности или новизны. Из-за неумеренного употребления смысл слова размывается.

18 Стражева Елена

  • Антипаттерны разработки - Золотой молоток. Заключается в использовании одного и того же решения везде, в том числе путём искусственной подгонки условий, требований, ограничений задачи под данное решение. Может привести к неоптимальному решению, ненужному усложнению или недопустимому упрощению системы.
  • Архитектурные антипаттерны - Состояние гонки. Это ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Своё название ошибка получила от похожей ошибки проектирования электронных схем. Может привести у утечке памяти, уязвимости, порче данных и т.д.
  • Организационные антипаттерны - Раздутый улучшизм. Это приводит к программе, имеющей слишком много дополнительных функций, на работу которых уходит непропорционально много ресурсов системы, в особенности если эти функции не нужны или малополезны для работы программы.
  • Антипаттерн среды - Модные слова — особый род новых слов и речевых конструкций, часто используемых в коммерции, пропаганде и профессиональной деятельности для оказания впечатления осведомлённости говорящего и для придания чему-либо образа важности, уникальности или новизны. Из-за неумеренного употребления смысл слова размывается.

19 Тарбаев Владимир

  1. Антипаттерны разработки – Волшебные числа. «Магическими числами» называют плохую практику программирования, когда в исходном тексте встречается числовое значение и не очевидно, что оно означает.
  2. Архитектурные антипаттерны – Сохранение или смерть. Сохранение изменений в конфигурации на жесткий диск лишь при завершении приложения, приводящее к тому, что в случае отказа в программе эти данные будут утеряны.
  3. Организационные антипаттерны – Раздутый улучшизм. Добавление новых улучшений в ущерб суммарному качеству системы.
  4. Антипаттерны среды – Город ларьков. Каждый отдел вырабатывает свой собственный механизм обмена информацией.

20 Толокольникова Анастасия

  • Антипаттерны разработки – Волшебные числа. «Магическими числами» называют плохую практику программирования, когда в исходном тексте встречается числовое значение и не очевидно, что оно означает
  • Архитектурные антипаттерны - Божественный объект. Этот анти-паттерн, который довольно часто встречается у ООП разработчиков. Такой объект берет на себя слишком много функций и/или хранит в себе практически все данные. В итоге мы имеем непереносимый код, в котором, к тому же, сложно разобраться.
  • Организационные антипаттерны - Я тебе это говорил: Игнорирование мнения эксперта.
  • Антипаттерн среды - Синдром варёной лягушки. Лягушка в кипятке — научный анекдот, а также реально проводившийся в XIX веке эксперимент, описывающий медленное сваривание в кипятке живой лягушки.

21 Уланович Илья

  • Антипаттерны разработки –Лодочный якорь (Boat anchor)

Этот анти-паттерн означает сохранение неиспользуемых частей системы, которые остались после оптимизации или рефакторинга. Часто, после рефакторинга когда, который является результатом анти-паттерна, некоторые части кода остаются в системе, хотя они уже больше не используются. Так же некоторые части кода могут быть оставлены «на будущее», авось придётся ещё их использовать. Такой код только усложняет системы, не неся абсолютно никакой практической ценности. Эффективным методом борьбы с лодочными якорями является рефакторинг кода для их устранения, а так же процесс планирования разработки, с целью предотвращения возникновения якорей.

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

22 Чебыкин Герман

  • Антипаттерн разработки - Лодочный якорь (Boat anchor)

Этот анти-паттерн означает сохранение неиспользуемых частей системы, которые остались после оптимизации или рефакторинга. Часто, после рефакторинга когда, который является результатом анти-паттерна, некоторые части кода остаются в системе, хотя они уже больше не используются. Так же некоторые части кода могут быть оставлены «на будущее», авось придётся ещё их использовать. Такой код только усложняет системы, не неся абсолютно никакой практической ценности. Эффективным методом борьбы с лодочными якорями является рефакторинг кода для их устранения, а так же процесс планирования разработки, с целью предотвращения возникновения якорей.

  • Архитектурный паттерн - Состояние гонки (Race hazard, Race condition)

Состояние гонки — ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Своё название ошибка получила от похожей ошибки проектирования электронных схем.В более строгой академической среде принято использовать термин неопределённость параллелизма.

  • Организационный антипаттерн - Привязка к поставщику (Vendor lock-in)

Привязка к поставщику (англ. vendor lock-in, proprietary lock-in, customer lock-in, «барьер для смены поставщика») — бизнес-модель, в которой устанавливается зависимость потребителя от продуктов и услуг одного поставщика, намеренно создаются осложнения для смены поставщика из‑за высоких затрат на переход. Поставщики заинтересованы намеренно создавать замыкание для завоевания большой доли рынка, что иногда приводит к появлению монополии и «стандартов де-факто».

  • Антипаттерн среды - Синдром варёной лягушки (Boiling Frog Syndrome)

Лягушка в кипятке — научный анекдот, а также реально проводившийся в XIX веке эксперимент, описывающий медленное сваривание в кипятке живой лягушки. Сутью эксперимента является предположение о том, что если лягушку поместят в кипящую воду, она выпрыгнет, но если она будет находиться в холодной воде, которая медленно нагревается, то она не будет воспринимать опасность и будет медленно погибать. История часто используется как метафорическое отображение неспособности людей реагировать на значительные изменения, которые происходят постепенно.

23 Шаров Илья

  1. Антипаттерны разработки - Мягкое кодирование (Soft code) — параноидальная боязнь жёсткого кодирования. Это приводит к тому, что незахардкожено и настраивается абсолютно всё, что делает конфигурацию невероятно сложной и непрозрачной. Этот анти-паттерн является вторым концом палки о жёстком кодировании и поэтому тоже является опасным. Во-первых, при разработке много ресурсов уходит на реализацию возможности настроек абсолютно всего. Во-вторых, развёртывание такой системы повлечет так же дополнительные затраты. Перед началом решения определённой задачи следует определить, что должно быть настариваемым, а что является постоянным для различных систем или может быть настроено автоматически.
  2. Архитектурные антипаттерны - Божественный объект. Этот анти-паттерн, который довольно часто встречается у ООП разработчиков. Такой объект берет на себя слишком много функций и/или хранит в себе практически все данные. В итоге мы имеем непереносимый код, в котором, к тому же, сложно разобраться. Так же, подобный код довольно сложно поддерживать, учитывая, что вся система зависит практически только от него. Причинами являются — некомпетентность разработчика, взятие одним разработчиком большой части работы (особенно, когда размер работы «превышает» уровень опыта этого разработчика). Бороться с таким подходом надо — разбивать задачи на подзадачи, с возможностью решения этих подзадач различными разработчиками.
  3. Организационные антипаттерны - Единственный знающий человек (Single head of knowledge, SHOK) - когда жизненно важными для проекта сведениями или навыками обладает только один человек в команде, с его уходом работа останавливается;
  4. Антипаттерны среды - Непоколебимое мужество. Несмотря на ужасное планирование и ужасное принятие решений, отважные усилия хороших людей, обычно «на передовой», выполняют свою работу.