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