Антипаттерн №5 — Золотой молоток (Golden Hammer)
Самый страшный враг знания — не его отсутствие,
а иллюзия его наличия (с) Стивен Хокинг
До этого момента мы уже успели рассмотреть некоторые популярные ошибки проектирования и дизайна программ и систем. Как правило, описанные ранее антипаттерны могли случаться из-за отсутствия должного опыта и квалификации конкретного разработчика, сегодняшний же наш разговор о недуге, который косит в первую очередь опытных и закалённых программистов. Сегодня мы поговорим про «Золотой молоток» (Golden Hammer; по-другим версиям также можно встретить следующие названия: Молоток Маслоу, Закон молотка и т.д.).
Итак, Золотой молоток — это антипаттерн повсеместного использовании единственного решения. По сути, использование подобного подхода может быть не только в разработке и даже в областях далёких от программирования. К слову, сам термин явился миру за долго до появления определения антипаттерн.
На поверхности дело может обстоять следующим образом: разработчик, который однажды сталкивается с проблемой и находит крепкое рабочее решение — пытается пронести данный способ через всю жизнь, вездесущно затягивая в текущие и все будущие проекты. Полагаясь на логику, что хорошая работа в прошлом гарантирует тот же результат и в будущем. И, если в слесарном деле, допустим, одним гаечным ключом можно обслуживать все дома района, то в IT данная практика может выйти боком. Уверенность в серебряной пуле (это тонкая отсылка к книге Фредерика Брукса 🙂 ), любовь и религиозная «преданность» к конкретной технологии — это когнитивная реакция нашего мозга на новое и неизвестное. Людям более свойственно натянуть за уши исходные требования на свои знания и устоявшуюся реализацию, чем учить заново или придумывать что-то с нуля. И в этом-то и самая большая опасность молотка для профессионального разработчика.
Кроме страха перед неизвестным и новым, причиной антипаттерна Золотой молоток может также служить полное незнание альтернативных вариантов. Каждое серьёзное инфраструктурное или проектировочное решение должно быть подкреплено каким-либо исследованием и обоснованием. Нужно для себя раз и навсегда принять как данность, что не бывает единственного верного способа решения той или иной проблемы. Это касается не только выбора какой-либо технологии вашего стека, но и может быть более низкоуравневым решением — вплоть до языка программирования или даже типа и вида транспорта (связи между узлами какой-либо системы).
Результатом ошибки могут быть весьма печальными: от плохой, нестабильной, трудной в поддержке реализации — до полного провала проекта. Что уж говорить, когда судьба целой компании может зависеть от подобных решений. Не говоря уже о репутационных последствий, как минимум, для вас лично.
Симптомами Golden Hammer может выступить тот факт, что перед разработкой никто не взвешивал никаких рисков и не проводил анализа или обоснования выбора того или иного пути решения проблемы. Если вы упираетесь в какие-то ограничения и рамки, вызванные вашим любимым инструментом и эти искусственные блоки подталкивают вас к усложнению внутренних частей системы — подумайте, возможно, существуют и другие варианты выхода из сложившейся ситуации. Старайтесь узнать свой технологический стек не только точечно, а ещё и в ширину (горизонтально), чтобы иметь базовые представление о хороших и плохих сторонах какого-либо из направлений\технологии. Не зацикливайтесь на удобных и знакомых вариантах — пробуйте разное, следите за тенденциями, читайте свежую литературу, смотрите обзоры и рейтинги. Не забывайте о собственных Pet-проектах, которые также дают этот важный бесценный опыт.
Впереди нас ждёт статья про hard- и soft- код, а также обзоры других неприятных в разной степени антишаблонов. Немного терпения, други!