Перфекционизм, или почему их нужно пиздить.

Привет, тора гой дневничок. Смахнув пыль с клавиатуры, хочется порассуждать о широко известной в узких кругах конь цепции перфекционизма. Перфекционизм - это такое себе желание сделать все пЁрфект. Ну то есть вообще все.

Основными (как принято думать) признаками полезного перфекционизмаоксюморон является процесс думания и продвижения вперед. Часто характеризуется “лучше день потерять, но затем за пять минут долететь”. Рефакторинг - это один из способов достижения перфекционизма, когда в процессе написания одного куска говнокода в соседнем модуле находится другой кусок говнокода, и по ходу дела переписывается более компактно/понятно/быстро/etc. Причем все тут зависит от того, что понимается под термином “перфекционизьм” каждым конкретным потомком обезъяны, освоившей клавиатуру. Критериев тут может быть великое множество, среди них - банальное форматирования кода двумя пробелами вместо четырех (или богопротивной табуляции), написание документации на все, покрытие юниттестами на 100500% и прочие священные практики бангалора.

В терминальных случаях перфекционизма головного нервного узла реализуется классический сценарий Live lock - когда процесс кипит, клавиатуры меняются одна за другой - а толку нет. Например, SVN заменяется на Git - хотя методика работы с VCS остается ровно точно такая же. Или же затеивается тотальное покрытие всех геттеров и сеттеров юнит-тестами, потому что зеленая строчка и цифирки 100% - это говорят, круто.

Часто под перфекционизм маскируется банальная прокрастинация. Вместо, например, интегрирования в систему ролей и разделения привелегий с адаптацией под системы оплаты и подписки - кипит и буйствует обсуждение, куда нужно подвинуть кнопку или какой цвет фона более православный. Вместо наращивания функционала прогонки транзакций - меняется на корню брокер MQ.

Перфекционизмом могут также пользоваться как отговоркой при сдвигах сроков сдачи проектов и компонентов системы. Ну в самом деле - между “я не успел” и “я переписывал этот компонент потому что код - говно” есть большая разница, и личинка погонщика стада бабуинов не всегда может распознать, когда и правда нужно было переписывать этот компонент. А когда разработчик банально вешает лапшу на уши.

Под перфекционизм еще бывает маскируется такая себе “экономия на спичках” - формально нужная и полезная весчь, если брать сферическую систему в вакууме. Но чаще всего эта экономия выражается в изобретении своего хипсорта для массива из 10 элементов, который грузится из статического датасорца один раз при старте приложения.

Еще перфекционизм может случиться в виде оверинжениринга, когда чтение CSV файла заворачивается в стратегию, порождаемою фабрикой итераторов поддерживаемых текстовых файлов с разделителями запятыми и точкой с запятой. Ну или для сцайта с полутора пользователями в год применяется аццкий компот из Websphere, Hibernate и пижженого MS SQL Server. Также оверинжиниринг любят маскировать под кодогенераторы на хаскеле/кложуре и прочем OCaml в местах, где это не только не полезно - но еще и вредно.

Перфекционизм в сфере менеджмента не менее разнообразен. Из того, что мне довелось видеть - это отчеты ради отчетов и планы ради планов. Практической пользы - ноль, но всегда есть чем себя занять, с аргументацией “нам нужно провести дополнительные исследования чтобы понять почему мы так плохо провели исследования в прошлый раз”. Особенно красиво это видно на ретроспекшнах в SCRUM - ну это когда вся команда три-четыре часа анализирует “почему мы проебали спринт”, хотя всем все и так понятно - потому что из 8 часов в день час уходил на стендап, два часа - на обед, и еще три часа - на два полуторачасовых митинга. Но менеджмент может клево отчитаться - мы проебали этот спринт потому что мы проебали этот спринт, и в будущем обязуемся проебать его как-то по другому, а пока нам надо улучшить коммуникацию - и поэтому мы вводим дополнительно два митинга в неделю всей команде, по часу каждый.

Надо как-то написать более подробно про SCRUM, это просто пестня что из него делают в реалиях отечественного аутсорса.

Выводом из всего вышесказанного можно сделать то, что если где-то употребляется слово “перфекционизм” или “перфекционист” - нужно сбоку сразу про себя проговаривать “распиздяй”. И все сразу же станет на свои места. Потому что перфекционизма не бывает.