10x разработчики может и миф, но инженеры -10x существуют.
Чтобы стать -10x инженером нужно просто потратить 400 инженерных часов в неделю. Вот какими стратегиями этого можно добиться.
Свести к нулю результаты работы 10 инженеров
Измените требования как можно позже в процессе разработки. Чтобы избежать обвинений, делайте требования запутанными с самого начала.
Создайте 400 часов напряженной работы
Попросите свою команду выполнять задачи, которые только напоминают работу. Например, попросите их делать презентации, диаграммы и управлять тикетами. Создавайте бессмысленные ритуалы.
Создайте 400 часов выгорания/текучки
Будьте неблагодарными. Возлагайте вину. Сейте путаницу. Злитесь. Заставлять других работать сверхурочно.
Держите 10 инженеров в заложниках технической дискуссии
Позволять инженерам обсуждать идеи. Поощряйте их элегантность, а не к прагматизм. Убедитесь, что никто не имеет права принимать решения.
Добавьте 400 часов накладных расходов на коммуникации
Совещания разрушают рабочие календари. Чтобы незаметно тратить время других, пишите длинные сообщения/документы и распространяйте их как можно шире. Приветствуйте все мнения и стремитесь к вовлеченности.
Потратьте 10-недельный зарплатный фонд на облачные расходы
Пишите медленные программы. Избегайте индексов в БД. Запускайте однопоточные программы на 16-ядерных машинах. Выбирайте экзотическое оборудование с большим объемом оперативной памяти и графическими процессорами. Свободно храните данные в памяти или на диске. Ничего не сжимайте. Не обращайте внимания на компоновку данных.
Создайте бесполезные инструменты
Решите, что существующие решения — это не совсем то, что вам нужно. Пишите скрипты, которые понятны только одному человеку. Если скрипт делает что-то важное, избегайте документации.
Добавьте 400 часов времени на компиляцию/сборку
Медленная сборка приводит к мультипликационной потере времени. По мере увеличения времени сборки разработчики чаще отвлекаются. Чтобы убедиться, что разработчики переключаются между задачами, перекомпиляция должна занимать не менее 20 секунд. Для достижения аналогичного эффекта можно также писать медленные тесты.
Пишите бессмысленные тесты
Создавайте зависимости от определенных переменных без тестирования базовой функциональности. Мокируйте вызовы функций до тех пор, пока исходный код не будет покрываться тестами. Вносите в тесты определенную случайность, чтобы они успешно/безуспешно выполнялись без причины.
Потратьте 400 часов на проектирование плохой архитектуры
Не обращайте внимания на то, как системный дизайн развивается со временем. Или, наоборот, заставляйте свою команду зацикливаться на архитектурных решениях, чтобы у них не оставалось времени на проверку гипотез.
Потратьте 400 часов на развертывание
Создайте как можно больше сред. Production и staging должны сильно отличаться друг от друга. Запускайте хрупкий код с хрупкими системами сборки. Часто переносите базы данных.
Потратьте 10-недельный зарплатный фонд на недовольных клиентов
Постоянно не обнаруживайте и не устраняйте серьезные ошибки. Не обращайте внимания на уязвимости в системе безопасности.
Пишите бесполезную документацию
Объясняйте код в личных сообщениях. Пишите вики, которой никто не пользуется.
Заманите 10 инженеров в ловушку бесполезного проекта
Привлеките ярких инженеров и растратьте их потенциал. Преуменьшайте сложность проекта для руководства, преувеличивайте его полезность. Говорите руководству, что проект «почти завершен», пока его не отменят.
Добавьте зависимости, которые требуют 400 часов на поддержку
Инженеры должны индивидуально изучать каждую библиотеку.
Откладывайте пивот
Никогда не признавайте неудачу. Утопите свою команду в невозвратных затратах. Игнорируйте компромиссы 80/20, которые могут улучшить ситуацию.
Наймите десять 0х инженеров
Издержки на упущенные возможности могут убить. Мертвый груз может не наносить активного вреда вашей команде, но такие люди сидят на стульях тех разработчиков, которые могли бы активно помогать.
Наймите пять -1x инженеров
Не соглашайтесь на мертвый груз. Активно нанимайте инженеров, которые вызывают катастрофы и сопротивляются обучению.
Не допускайте увольнения десяти -1x инженеров
Не раскачивайте лодку. Не оставляйте бумажных следов неудач. Поручайтесь за плохих инженеров.
Потратьте 400 часов на устранение ошибок
Создавать неотлаживаемые программы. Накладывайте слои абстракции на все. Пишите спагетти-код. Делайте все чувствительным к начальным условиям. Избегайте чистых функций. Широко используйте зависимости. Говорите «это работает на моей машине» всегда, когда это возможно.