При управлении системой крупного и успешного предприятия вы обязательно будете со всех сторон получать запросы на добавление новых функций. Более важные клиенты, скорее всего, будут в приоритете, и именно они, если вы не справитесь, станут вашим худшим кошмаром. Бизнесу необходимо, чтобы его ключевые клиенты были довольны, и, естественно, он будет стремиться удовлетворить их потребности, чтобы оставаться на плаву.
Поэтому, если вы будете выполнять все такие запросы, то можете обнаружить, что согласуете расходы, которые делаются в интересах только одного конкретного клиента, что создает дополнительную нагрузку и в конечном итоге привязывает вашу платформу к этому клиенту. Что же делать современному техническому директору, который не хочет все время говорить «нет»? Отказы с вашей стороны не добавят бизнесу (или клиентам) любви к вам. Лучше рассматривайте каждый запрос на новый функционал в контексте всех ваших клиентов. Учитывайте следующее:
• Будет ли новая функция представлять ценность для других клиентов? Если да, то она в любом случае должна быть в вашем плане.
• Можно ли дополнительно проработать или обсудить эту функцию, чтобы она стала полезной для более широкого круга пользователей?
• Если эта конкретная функция не имеет ценности для остальных клиентов, есть ли другой способ решить проблему клиента?
Например, технология экспорта/импорта данных позволит клиенту создать внешнее решение, также он может использовать ваше API, если оно есть. Если ваша система имеет возможность настройки для отдельных клиентов – добавьте в нее поддержку плагинов, чтобы ее функционал можно было расширять, не затрагивая основные компоненты. Главное – не позволяйте себе оказаться во всем знакомой ситуации:
if (Client == XYZ) {
// делаем что-то для конкретного клиента
}
Так выглядит самый быстрый и верный способ создания технического долга. Он приводит к усложнению кодовой базы, созданию компонентов, которые крайне сложно тестировать, и появлению кода, который нельзя будет трогать, потому что от него зависит работа клиента.
Заметки с полей
Клиент всегда прав
Я встречал множество примеров в стиле «если клиент такой-то – делать то-то» в портфельных компаниях разного возраста и размера, и все это печальные примеры, потому что с каждым таким решением все сложнее свернуть с порочного пути и каждый такой релиз увеличивает сложность продукта. Другая крайность – когда для конкретного клиента создается отдельная копия всего репозитория. Это самая опасная ситуация, которая гарантированно ведет к катастрофе. Вы сами удваиваете свою рабочую нагрузку. Любые обновления или исправления функций необходимо будет вносить и туда, и сюда, и потом тестировать. Если вы поймаете себя на том, что произносите фразу: «Это же только для одного клиента/просьбы», – немедленно бросайте это дело! Потом вы обязательно скажете себе спасибо.