Техническое задание – дорожная карта любого специалиста, особенно программистов. Вы можете бесконечно долго рассказывать о том, что сайт должен быть красивым, быстрым или адаптивным, но если это не будет зафиксировано в ТЗ, то специалист ничего не сможет воплотить в жизнь. Многие программисты пользуются некорректными техническими заданиями, чтобы не выполнять доработки, затягивать сроки и т. д. Рассказываем, как составить техническое задание для программиста, чтобы получить качественный продукт и предупредить хитрости со стороны специалиста.
Когда требуется четкое техническое задание
К услугам программистов приходится прибегать в нескольких случаях:
- сайт существует в форме идеи, требуется разработка с нуля;
- нужно доработать или расширить имеющуюся площадку. Например, добавить онлайн-калькуляторы, создать блог, реализовать анализатор статистики;
- требуются доработки после выполненной разработки. Такой сценарий возможен, если вы заказали услугу у неопытного программиста, который не смог довести начатое до конца.
До начала сотрудничества со специалистом нужно проверить его портфолио, отзывы заказчиков и уровень профессионализма. Проводятся технические консультации, честный специалист не обещает сделать «за неделю на 60% дешевле, чем в агентстве». Поиск начинается с вакансии, рассмотрим этапы ее составления.
Составление вакансии для программиста
При формировании описания вакансии необходимо максимально сузить круг поиска. Конкретизируйте резюме: «Нужен программист для добавления функции А на готовый сайт на движке WordPress». Программисты сразу поймут, смогут ли они выполнить подобную задачу, учитывая свои профессиональные компетенции. Однако такие формулировки дают поверхностное видение объема работ, после выбора исполнителя заказчик должен предоставить ему техническое задание:
- сроки на выполнение (согласовываются с исполнителем), ситуации, при которых дедлайн можно сдвинуть без репутационных и коммерческих потерь;
- варианты оплаты и способы перевода средств. Например, электронными деньгами после приема готовой работы. В ТЗ можно зафиксировать моменты с авансом, хотя незнакомым специалистам, особенно при дистанционном сотрудничестве, предоплату лучше не давать;
- правки и штрафные санкции, например, за просрочку дедлайна;
- детализованное описание результата работы;
- техническую информацию, условия тестирования.
Многие пункты – типичные, их включают во все договоры подряда. Вторая половина списка относится именно к разработке, поэтому ей нужно уделить особое внимание.
Как оформить ТЗ и сформулировать цели
Результат
Для предупреждения разногласий клиент должен уточнить, что хочет получить в результате. Например, цель – создание сервиса по проверке орфографии. Сформулируйте и в столбик запишите требования:
- оформление поля для вставки текста;
- проверка в режиме реального времени;
- выделение ошибок, комментарии к ним;
- лимиты на объем текста, количество проверок без регистрации;
- способы оплаты дополнительного объема или проверок;
- наличие измерения грамотности в процентах, звездах, баллах;
- возможность сохранить/скачать текст.
Кажется, что длинный список – это чересчур скрупулезно, однако такие ТЗ программисты ценят. Им не нужно придумывать все самостоятельно, а потом вносить миллион правок из-за того, что заказчик видит сервис по-другому. Чем точнее все описано, тем лучше.
Техническая информация
Заказчик обязан предоставить техническую информацию, необходимую для выполнения поставленной задачи. Это легко реализовать, если сайт создан на популярном движке: достаточно указать название движка и перечень плагинов, с которыми новый продукт будет взаимодействовать.
Если сайт самописный, то все сложнее. В этом случае нужно предоставить данные о языке, чтобы программист подготовил сам продукт. После этого вы сами добавите его на сайт, если умеете это делать: все достаточно сложно, на финише можно получить криво работающую программу.
Идентификация ресурсов – первый шаг на пути подготовки ко взлому. Например, хакер получил данные о том, что портал функционирует под управлением IIS 7 под управлением Windows Server 2008. В перспективе он начнет искать уязвимости, характерные для этих продуктов, используя специальные базы. Если поиск не увенчается успехом, то мошенник начнет искать лазейки самостоятельно. В результате для владельца сайта ситуация может разворачиваться плачевно.
Если вы хотите сразу добавить сервис на сайт, то можно предоставить данные о базе данных, используемых файлах, библиотеках, функциях и языке. Можно дать сведения о функциях, которые использовать нельзя во избежание конфликта.
Оформление кода
Разные программисты используют индивидуальный подход к написанию кода. Здесь все как с текстами: каждый автор имеет свой стиль, он не является плохим или хорошим, он индивидуальный. Многие программисты откровенно не любят чужие коды, замедляющие выполнение поставленных задач. В некоторых случаях – делают проекты невыполнимыми, поэтому от работы приходится отказываться. Лучше составить стандарты для оформления кода, особенно если в проекте принимают участие несколько человек. Стандарт формируется по аналогии с редакционной политикой, но позволяет получить программу, которую при необходимости быстро исправит или масштабирует другой программист. Создание стандартов лучше доверить первому программисту: он задаст «стиль», его будут придерживаться следующие специалисты.
Тестирование
До подключения нового продукта нужно провести поиск лазеек в коде, они могут быть как предумышленными, так и полученными из-за невнимательности, неопытности. Если проблем нет – можно выполнять подключение, тестирование, открытие доступа для обычных юзеров.
В заключение
Составление ТЗ – основа получения качественного, безопасного, функционального продукта. Оно предупреждает недопонимание, ошибки, дальнейшие проблемы. Техническое задание – страховка для каждой стороны сделки: программист знает свои обязанности и задачи, клиент – уверен в сроках и имеет «визуальный образ», по которому будет проверять готовую работу. ТЗ предупреждает изменение вектора разработки на разных этапах, формируя гармоничную среду для комфортного сотрудничества.