Ситуация, когда разработчик в небольшой компании работает напрямую с внутренним заказчиком без промежуточного звена в лице аналитика или руководителя проекта, — это классический сценарий для возникновения конфликтов. Проблема «кривого» технического задания (ТЗ) здесь стоит особенно остро: процесс разработки затягивается, код приходится многократно рефакторить, а сроки «уплывают». Разберем подробно, как распределяется ответственность в таких условиях и какие практические шаги помогут программисту 1С защитить свою работу и нервы.
Проанализируем типичную ситуацию. Заказчик (например, бухгалтер или менеджер) ставит задачу на своем «птичьем» языке, исходя из своих текущих болей. Разработчик, стремясь помочь, берет задачу в работу «как понял». Спустя неделю выясняется, что результат не соответствует ожиданиям, потому что «подразумевалось совсем другое». В итоге ответственность становится обоюдной, что на практике означает ее полное отсутствие. Руководство видит отсутствие результата, а виноватыми оказываются оба: один не смог объяснить, другой — понять.
Рассмотрим причины затягивания сроков в таких условиях:
Выясним основной метод защиты разработчика — это формализация входящих требований. Даже в условиях небольшой компании необходимо внедрить минимальный регламент. Рассмотрим, как это сделать:
Во-первых, внедрим правило обязательного письменного задания. Если пользователь не может написать, что он хочет, значит, он сам до конца не понимает задачу. Затраты времени программиста на «угадывание» — это прямой убыток компании. Посмотрим на эффективный алгоритм действий:
Используем фразу: «Я подготовил описание задачи, как я ее понял. Подтвердите, что реализация именно этого функционала решит вашу проблему». Это перекладывает ответственность за «хотелки» на заказчика.
Проанализируем один из самых мощных инструментов в арсенале программиста 1С — контрольный пример. Когда речь идет о расчетах, отчетах или сложных алгоритмах, устных объяснений недостаточно. Разберем по шагам, как применять этот метод:
Попросим заказчика предоставить расчет в Excel на реальных данных. Например, если нужно изменить логику расчета премий, пусть заказчик заполнит таблицу:
Как показывает практика, на этапе составления такого примера 50% «кривых» задач отсеиваются сами собой, так как заказчик обнаруживает логические нестыковки в своих требованиях. Если пример предоставлен, ваша задача как программиста — написать код, который выдает ровно те же цифры, что и в Excel. При возникновении претензий вы всегда сможете сказать: «Программа работает строго по предоставленному вами алгоритму».
Рассмотрим альтернативный взгляд: в малых компаниях опытный разработчик неизбежно берет на себя роль бизнес-аналитика. Это не «слабая позиция», а экспертная. Проанализируем подход «программист-доктор»:
Вместо того чтобы требовать идеальное ТЗ, разработчик сам собирает анамнез. Мы не спрашиваем: «Какое ТЗ вы мне дадите?». Мы спрашиваем: «Какую проблему вы хотите решить этим изменением?». Часто выясняется, что пользователю нужна не «красная кнопка», а автоматическое заполнение реквизитов, о возможности которого он просто не знал.
Для реализации такого подхода необходимо:
Разберем ситуацию, когда новое требование заставляет переписывать весь код. Это часто случается из-за отсутствия понимания границ задачи. Посмотрим на примере задачи для 1С:Управление нашей фирмой:
Заказчик просит: «Нужно блокировать отгрузку, если нет оплаты в течение 72 часов». Разберем, какие вопросы должен задать разработчик, чтобы не переделывать код трижды:
// Пример уточняющего алгоритма для разработчика:
1. Как считать 72 часа? (Календарные или рабочие?)
2. От какого момента отсчет? (От даты заказа или даты планируемой отгрузки?)
3. Что считать фактом оплаты? (Поступление на счет или только привязку к заказу?)
4. Для каких категорий клиентов действует правило?
Если реализовать задачу «в лоб», без учета праздников и выходных, заказчик придет в понедельник и скажет, что система работает неверно. Чтобы этого избежать, используем в коде гибкие настройки. Например, выносим константы (срок в часах, тип календаря) в настройки параметров учета или дополнительные реквизиты.
Выясним причину, по которой задачи часто меняются на лету. Это отсутствие фиксации трудозатрат. В условиях одной компании важно донести до руководства: уточнение ТЗ — это тоже работа. Если разработчик тратит 4 часа на обсуждение и 1 час на кодинг, это нормально.
Рассмотрим рекомендации по управлению очередью задач:
Иногда полезно применить «принцип трех гвоздей»: не бросаться выполнять задачу мгновенно, если она кажется сомнительной. Дайте ей «отлежаться» день. Часто заказчик сам возвращается с фразой: «Ой, мы передумали, нам это уже не нужно».
Проанализируем финальный вывод. За неадекватное ТЗ в конечном итоге всегда расплачивается бизнес — деньгами, временем и упущенными возможностями. Однако разработчик платит своим авторитетом и выгоранием.
Чтобы минимизировать эти потери, мы должны:
Такой подход переводит отношения из плоскости «раб и господин» в плоскость профессионального сотрудничества, где ответственность за результат распределена справедливо.