ФРИЛАНС МАРКЕТПЛЕЙС
Маркет Войти Регистрация

Связаться с поддержкой

Опишите вашу проблему, и мы ответим в течение 24 часов.

Нажмите или перетащите файл сюда
ТЗ для программиста: что дать исполнителю и какие вопросы задать до старта

ТЗ для программиста: что дать исполнителю и какие вопросы задать до старта

Вам прислали «нужно допилить модуль» — и ни слова про входные данные, окружение и то, как проверить результат. Вы начинаете разбираться, задаёте вопросы, а заказчик отвечает «ну там всё понятно, разберись». Знакомо? В доработке кода, в отличие от нового проекта, почти всё держится на деталях: неучтённый краевой случай или отсутствие доступа к тестовому окружению превращаются в часы бесплатной отладки. Разбираем двойную подачу: что заказчик должен дать в ТЗ программисту и какие вопросы задать самому исполнителю, чтобы не переделывать за свой счёт.

Что такое ТЗ для программиста и чем плох «допили на глаз»

ТЗ для программиста — это документ, в котором зафиксированы задача, контекст, входные и выходные данные, окружение, краевые случаи и критерии приёмки. Чем конкретнее каждый пункт, тем меньше времени вы потратите на выяснение деталей и переделку.

Фразы «допили модуль», «чтобы работало», «как обычно» — плохое ТЗ. В них нет ни форматов данных, ни окружения, ни критериев. Вы вынуждены додумывать: пишете код на своё понимание, а заказчик отвергает результат, потому что представлял иначе. Итог — переделка за свой счёт и подорванное доверие.

Хорошее ТЗ отвечает на вопрос: что именно принимает метод, что возвращает, как ведёт себя в ошибках и как проверить, что всё работает? Если на это есть ответ — вход, выход, краевые случаи, тесты — задача поставлена.

Структура ТЗ для программиста

Полноценное ТЗ на доработку кода состоит из восьми блоков. Каждый критичен: без краевых случаев код сломается на нестандартных данных, а без критериев приёмки вы не докажете, что задача выполнена.

1. Задача и контекст

Что нужно сделать и зачем: какую бизнес-проблему решает доработка. В каком модуле или сервисе работаем. Контекст помогает принять правильные решения там, где ТЗ не покрывает все детали.

2. Входные и выходные данные

Что принимает метод или функция и что возвращает: форматы, типы, структуры. Пример входного запроса и ожидаемого ответа. Это основа корректной реализации.

3. Окружение и стек

Где работает код: язык, версии, фреймворки. Как получить доступ к тестовому окружению, репозиторию, тестовым данным. Без этого вы потратите часы на настройку.

4. Поведение и краевые случаи

Как код ведёт себя в стандартных и нестандартных ситуациях: пустые значения, отрицательные числа, превышение лимитов, недоступность внешних сервисов. Краевые случаи — то, на чём чаще всего спотыкаются.

5. Объём: что входит и не входит

Чёткие границы задачи: что делаем в рамках этой доработки, а что — отдельная задача. Это защищает от расползания объёма и споров о том, входило ли «ещё вот это».

6. Критерии приёмки

Как проверить, что задача выполнена: конкретные сценарии, ожидаемые результаты, покрытие тестами. «Работает» — не критерий. «При сумме меньше нуля возвращает код 422 и пишет в лог» — критерий.

7. Формат передачи

Как сдаётся результат: ветка в репозитории, pull request, код-ревью, документация. Нужны ли тесты и в каком объёме. Как происходит слияние.

8. Правки

Сколько кругов правок входит в задачу и что считается правкой, а что — новой задачей. Фиксируйте письменно.

Раздел ТЗ: что писать и частые ошибки

Раздел ТЗ Что написать Частая ошибка
Задача и контекст Что делаем и какую проблему решаем «Допили модуль» без контекста
Вход и выход Форматы, типы, примеры запроса и ответа Форматы данных не описаны
Окружение и стек Язык, версии, доступы к тестовой среде Доступов нет — часы на настройку
Краевые случаи Пустые значения, ошибки, лимиты Краевые случаи не описаны
Объём Что входит и что не входит в задачу Объём расползается по ходу
Приёмка Сценарии проверки, покрытие тестами «Работает» без критериев
Передача и правки Ветка, PR, код-ревью, лимит правок Формат сдачи не согласован

Мини-пример: фрагмент ТЗ на доработку

Чтобы было понятнее, вот как может выглядеть реальный фрагмент ТЗ на доработку метода:

Задача: доработать метод создания заказа — добавить валидацию суммы.

Вход: JSON с полями «user_id», «amount», «items». Выход: объект с «order_id» или код ошибки.

Поведение: при сумме больше нуля заказ создаётся и возвращается «order_id». При сумме меньше или равной нулю метод возвращает код 422 и пишет ошибку в лог, заказ не создаётся.

Краевые случаи: пустой список товаров — код 400; отсутствует «amount» — код 400.

Покрыть юнит-тестами: корректный заказ, отрицательная сумма, пустые товары.

Передача: ветка от основной, pull request с код-ревью.

Такое ТЗ позволяет сразу написать код и тесты, а заказчику — проверить результат по конкретным сценариям.

Что уточнит хороший программист

Если вам прислали размытую задачу, не начинайте кодить сразу. Задайте вопросы — это защита вашего времени:

  • Какую бизнес-проблему решает доработка и какой ожидаемый результат?
  • Какие форматы входных и выходных данных, есть ли примеры?
  • Какие краевые случаи учесть: пустые значения, ошибки, лимиты?
  • Какое окружение и как получить доступ к тестовой среде и репозиторию?
  • Нужны ли тесты и в каком объёме?
  • Как сдать результат: ветка, pull request, код-ревью?

Зафиксируйте ответы в переписке заказа. На Workink такая переписка имеет силу ТЗ — если потом заказчик скажет «я хотел по-другому», у вас будет подтверждение изначальных договорённостей.

Чек-лист перед стартом кода

  • Понятны входные и выходные данные с примерами.
  • Прописаны краевые случаи и поведение в ошибках.
  • Есть доступы к окружению и репозиторию.
  • Определены критерии приёмки и покрытие тестами.
  • Согласованы формат передачи: ветка, PR, код-ревью.
  • Зафиксированы границы объёма и лимит правок.

Если хотя бы на два пункта нет ответа — сначала уточните, потом приступайте. Так вы защитите себя от бесплатных переделок.

Что дальше

Хорошее ТЗ — это не каприз, а способ сэкономить время обеим сторонам. На Workink заказчик и программист фиксируют договорённости в чате заказа — такая переписка имеет силу ТЗ, а деньги защищены безопасной сделкой до приёмки. Комиссия — 11% за заказ и 0% за вывод.

Зарегистрируйтесь на Workink — берите заказы на доработку кода или публикуйте свою задачу в категории «Разработка и IT». А чтобы взглянуть на задачу шире или углубиться в смежные темы, пригодятся гайды «ТЗ для разработчика: как читать и декомпозировать» и «ТЗ для разработки ПО: как поставить задачу».

Поделиться:

Читайте также

Комментарии (0)

Войдите, чтобы оставить комментарий

Будьте первым, кто оставит комментарий!