Это простые правила, которые позволят вам сохранить в целости нервы и кошелек.
За свою жизнь мне приходилось чаще разрабатывать, чем заказывать. Но все-таки я бывал по обе стороны.
Внемлите же.
Разберитесь, чего вы хотите
Хороший заказчик должен понимать две вещи:
- что именно хочет получить
- зачем ему это надо
Задушите в себе порыв самостоятельно придумать решение.
Допустим, интернет-магазин использует хостинг за 500 рублей в месяц и не всегда быстр.
Заказчик понимает, что нужно ускорить работу, и немедленно додумывает решение: давайте переедем на более мощный хостинг за 5000 рублей в месяц.
Если найти фрилансера на задачу “переезд сайта”, фрилансер сайт перенесет и получит оплату. Хостинг получит свои 5000 рублей в месяц. Магазин начнет работать быстрее.
Вроде бы все счастливы. Особенно владелец хостинга.
Но, если бы заказчик пришел на биржу с задачей “ускорить работу сайта”, могло бы оказаться, что включение кеширования делает магазин быстрым без дополнительных затрат на хостинг.
Оформите техническое задание
Техническое задание (ТЗ) очень подробно описывает сформулированную заказчиком задачу.
Базовая задача понятна: “сделайте мне быстрый сайт”.
В этом случае требуется описать, в каком месте и каким методом проводятся измерения скорости. До какого уровня нужно ускорить, чтобы результат считался достигнутым. И какие средства можно использовать, а какие нет.
Отдать решение этих вопросов исполнителю - очень плохая идея.
Примерно настолько же плохая, насколько плоха идея во время ремонта квартиры сказать мастерам “поклейте мне обои” и не указать какие и куда.
Прелесть ТЗ в том, что программист, составляя его, заранее продумает список вопросов, которые заказчику даже в голову не приходили, и получит на них ответы.
За составление ТЗ, как и за проект ремонта, требуется платить. Но правильно составленное ТЗ экономит существенно больше.
Есть хорошая поговорка: "нет ТЗ - результат ХЗ".
Не лезьте в реализацию
Вы же не советуете врачу, какой рукой держать сверло, пока он лечит вам зуб?
В любом деле есть вопросы “что делать” и “как делать”.
Заказчик (особенно после согласования ТЗ) очень хорошо понимает, что нужно делать. Программист знает как делать.
Если заказчик так хорош, что знает и то, и другое - он профессионал, который мог бы сам решить задачу. Такое иногда бывает - я сам периодически заказываю разработку вещей, которые мне делать скучно или некогда.
В этом случае он понимает, что разумно предоставить исполнителю определенную свободу действий, иначе все придется делать самому.
Если заказчик не знает “как”, лучше сосредоточиться на соответствии результатов техническому заданию.
Контролируйте этапы выполнения
Когда речь идет о ремонте квартиры, мало кому приходит в голову гениальная идея проверить результат после окончания ремонта.
Нет, вы будете приходить раз в несколько дней и проверять, все ли идет по плану.
Не забухали ли строители, не затягивают ли они сроки, не взяли ли параллельно несколько квартир.
Разработчик тоже человек, и ничто человеческое ему не чуждо.
А еще, контролируя этапы разработки, вы сможете убедиться, что каждый из них сделан хорошо.
Платите вовремя
После составления ТЗ разработка естественным образом делится на этапы.
Логично разделить оплату на те же этапы, и производить периодические расчеты.
В разработке хорошим тоном является предоплата. Если этапы, на которые разделена разработка, выбраны правильно, заказчику не составит труда произвести небольшую предоплату, а разработчик не будет нервничать, что слишком долго работает бесплатно.
Оплата проекта целиком после реализации ставит в уязвимую позицию разработчика. Заказчик может требовать внесения миллиона правок или просто не оплатить заказ.
Слишком большая предоплата, в свою очередь, провоцирует разработчика. Не стоит искушать человека, которого вы даже не видели.
Соблюдайте эти простые правила, и ваши зубы будут крепкими и здоровыми, а волосы сильными и шелковистыми.