Бывает, что сайт уже готов, но нужно добавить на него какую-нибудь программу:
- онлайн-калькулятор;
- программу рассылки;
- анализатор статистики;
- парсер и так далее.
Или вы хотите создать какой-то уникальный сервис для пользователей.
В таких случая не всегда получается воспользоваться готовыми решениями и приходится нанимать программиста.
Составление вакансии и ТЗ для программиста
Чтобы оставить объявление о поиске программиста-фрилансера, нужно сузить круг поиска. Для этого пишется объявление такого вида:
Требуется программист, чтобы добавить функцию X на готовый сайт на WordPress.
Из объявления фрилансер понимает, что от него требуется и сможет ли он это сделать. Но из него не ясно, какие плагины или наработки уже используются, поэтому нельзя сразу выявить уязвимости.
Когда вы определитесь с выбором исполнителя и обговорите все важные моменты, можно отправлять ТЗ. В нем должно быть:
- Сроки, обговоренные с исполнителем, и ситуации, когда дедлайн можно подвинуть.
- Способ и вариант оплаты. Например, на банковскую карту после принятия заказа.
- Штрафы и правки.
- Подробное описание того, как вы видите результат работы.
- Техническая информация.
- Тестирование
Первые три пункта стандартны для любого договора подряда, а вот последние три можно разобрать подробно.
Желаемый результат
Чтобы при принятии готовой программы не было разногласий, лучше подробно описать, что вы хотите получить.
![Когда ТЗ недостаточно подробное Мем про программиста](/upload/medialibrary/fce/l1ne1dly3d45ao3303pw97nk2kfymer3/01.webp)
Допустим, вам нужен сервис проверки орфографии. Опишите все ваши представления:
- в какое поле пользователь может вставлять текст;
- должен ли он проверяться в режиме реального времени;
- как будут выделяться ошибки;
- будут ли комментарии к ошибкам;
- будет ли ограничение на объем или количество попыток;
- какой объем текста можно проверить за один раз или за один день;
- как пользователи будут оплачивать дополнительные попытки или объем;
- какие бонусы будут получать пользователи;
- нужно ли измерять грамотность текста в баллах;
- нужно ли сохранять текст в базу данных и так далее.
Такая скрупулезность может показаться муторной или даже излишней, но она обезопасит и вас и программиста.
Техническая информация
Вы должны предоставить техническую информацию, которая необходима для выполнения этой конкретной программы, но не более. Это легко, если ваш сайт создан на каком-нибудь распространенном движке – вы просто указываете название движка и плагины, с которыми должна взаимодействовать новая программа.
С самописными сайтами или движками сложнее. Тут вы можете либо не давать вообще никакой информации, кроме языка, чтобы программист составил только саму программу. А вы потом самостоятельно добавите ее на сайт, если разбираетесь в вопросе, но это чревато тем, что результат будет криво работать.
Идентификация сетевых ресурсов является важным подготовительным этапом перед осуществлением взлома. Если хакер знает, что ваш корпоративный портал работает под управлением IIS 7 под управлением Windows Server 2008, то ему необходимо найти уязвимости, которым подвержены данные программные продукты. Для этого проще всего поискать в базах уязвимостей. В случае если найти ничего не удалось, то особо продвинутый взломщик может попытаться самостоятельно найти «лазейку», собрав у себя точную копию взламываемой системы и попытавшись самостоятельно проанализировать код. «Информационная безопасность: защита и нападение», Бирюков А. А.
Если хотите, чтобы новый сервис сразу был добавлен на сайт, можете указать данные об используемых файлах, базе данных, языке, библиотеках и названиях функций. Вот пример:
Программа должна отображаться на странице page.php, а исполнительный файл в файле core.php. Взаимодействие между файлами с помощью ajax. Все обработанные данные нужно записывать в таблицу data_table (My_SQL) со столбцами id, name и url.
Нельзя создавать функции и переменные с названиями: generate, crop и analyze. Иначе возможен конфликт.
Стандарты оформления кода
Разные люди по-разному пишут. Хороший пример – наш блог. В нем несколько авторов, у каждого из которых свой стиль. То же самое и с программистами.
Я спросил Ольгу Безматерных, HR-директора TexTerra, что она думает по поводу работы с чужим кодом. Она ответила, что он замедляет выполнение задач, а один раз в ее практике был случай, когда работать с кодом было невозможно – пришлось вернуть деньги.
Поэтому если над проектом работает несколько человек, нужно составить стандарты оформления кода – что-то вроде редполитики для программистов.
Допустим, нужен код, который будет проверять, равна ли переменная $a единице, и выводить об этом сообщение. Кроме того, что этот код можно по-разному оформить, его можно по-разному реализовать.
![И это даже не половина способов Способы записи переменных](/upload/medialibrary/81a/o4ff6yjhteqvb5vxf5ctdqhgjbthhvu2/02.webp)
Переменные можно называть по-разному: $aB, $ab, $a_b, $A и так далее. Если это незначительно, добавлять комментарии критически важно. Без них в коде тяжело ориентироваться, даже если его писали вы, но отложили на неделю.
Поэтому, чтобы потом эту программу легко мог исправить любой другой программист, нужно чтобы у нее был какой-то стандартизированный вид. Доверить составление стандартов можно первому программисту, с которым вы работали.
Подключение и тестирование
Перед подключением программы лучше проверить код на наличие лазеек – предумышленных или нет. Если их нет, можно подключать. Дальше идет тестирование и открытие доступа для всех пользователей.
Заключение
Составление технического задания для программистов должно быть предельно точным. Это не тот случай, когда можно надеяться на взаимопонимание. Также лучше продумать все с самого начала, потому что постоянные изменения вектора не только не ускоряют путь к цели, но и делают его дороже.