Золочение.
Золочение — добавление функций или доработок сверх согласованных требований, которое увеличивает затраты и риски, хотя заказчик об этом не просил.
В управлении проектами и управлении временем золочение (gold plating) — это явление работы над проектом или задачей за пределами точки убывающей отдачи.
Например, выполнив требования проекта, менеджер или разработчик продолжает дальше улучшать продукт, полагая, что заказчик будет в восторге от дополнительных или более отполированных возможностей сверх того, что было запрошено или ожидалось. Если заказчик разочарован результатом, затраченные дополнительные усилия могут оказаться напрасными.
Золочение считается плохой практикой управления проектами с точки зрения различных лучших практик и методологий управления проектами, таких как Project Management Body of Knowledge (PMBOK) и PRINCE2. В данном случае «золочение» означает добавление любой возможности, не предусмотренной в исходном плане содержания (PMBOK) или описании продукта (PRINCE2), в любой момент проекта. Это связано с тем, что оно вносит новый источник рисков в исходное планирование — дополнительное тестирование, документирование, затраты или сроки. Однако избегание золочения не препятствует добавлению новых возможностей в проект; их можно добавить в любое время, при условии что они следуют официальной процедуре внесения изменений и учитывается влияние изменения на все области проекта.
Последствия золочения
Даже наилучшие результаты золочения могут привести к негативным последствиям для менеджера проекта или проекта в целом. В лучшем случае заказчик принимает результат проекта вместе с внеплановой работой, и ожидания заказчика по будущим проектам могут навсегда подняться до нереалистичного уровня. В худшем случае заказчик может полностью отвергнуть результат проекта и аннулировать контракт.
Пример
В задаче требовался экспорт заказов в CSV. Разработчик добавил ещё вывод в PDF и электронные таблицы, темы оформления, локализацию и диаграммы, о которых никто не просил, — и каждая из этих возможностей требует тестов, документации и сопровождения, а также вносит риски, не учтённые в плане.
interface Order { id: string; total: number }
interface ExportOptions {
format: "csv" | "pdf" | "xlsx";
theme?: "light" | "dark";
locale?: string;
includeChart?: boolean;
}
// в задаче просили только экспорт заказов в CSV
export function exportOrders(orders: Order[], options: ExportOptions): string {
switch (options.format) {
case "csv":
return toCsv(orders);
case "pdf":
return renderPdf(orders, options.theme ?? "light", options.locale ?? "en", options.includeChart ?? false);
case "xlsx":
return renderSpreadsheet(orders, options.locale ?? "en");
}
}
Поставляйте то, что было согласовано; дополнительные форматы можно предложить через процедуру управления изменениями, если они действительно кому-то понадобятся (см. также Теоретическая общность).
interface Order { id: string; total: number }
export function exportOrdersCsv(orders: Order[]): string {
const rows = orders.map((order) => `${order.id},${order.total.toFixed(2)}`);
return ["id,total", ...rows].join("\n");
}
Адаптировано по статье Википедии “Gold plating (project management)” (версия 1288387819), распространяется по лицензии CC BY-SA 4.0; текст переведён и отредактирован, добавлены примеры.