Мне было поручено управлять проектом, который был отдан на аутсорсинг некоторым украинским разработчикам.
Компания наняла их через Elance по фиксированной цене . В этот момент мой босс оставил меня одного, чтобы справиться с ними и выполнить работу. Я создал подробную спецификацию полной вещи, которую нужно было сделать.
Проект включал в себя такие вещи, как XMPP, RabbitMQ и Database. На моей первой встрече с ними (всегда IM) я подробно объяснил, что им нужно делать. Казалось, они понимают это - и они были очень уверены, что это будет сделано легко.
Все идет нормально. Но через неделю, когда мы встретились снова, они были полны недоразумений о том, что нужно было сделать. Когда я спросил одного из разработчиков, знает ли он XMPP, он сказал, что работает с ним впервые. На нашей первой встрече я особо упомянул сложность проекта и задействованные технологии. Кроме того, я неоднократно просил их написать функциональную спецификацию, как именно они это сделают. Но они сказали «НЕТ» и настояли на том, чтобы лучше написать код. Я сказал ОК.
Проект завершен через 3 недели, и они доставили то, что было нужно. В этот момент я начал пересматривать код. По большей части это было нормально, но есть некоторые важные проблемы:
- они жестко закодировали некоторые вещи, которые нужно было выделить в конфигурационный файл
- было несколько конфигурационных файлов, которые мне нужно было объединить в один
- они написали абсолютно никакой документации
- некоторые другие незначительные изменения
Я попросил их внести эти изменения (кроме документации) - и у нас был аргумент.
Они сказали, что, поскольку цена была фиксированной, я несправедливо просил их внести какие-либо изменения после того, как они закончили рабочий код. То, что они работали над проектом неоправданно долго, и теперь было совершенно неправильно просить что-либо.
Наконец, теперь они внесли изменения, и проект окончен. Но это оставляет некоторые вопросы в моей голове ...
Они сделали то, что было нужно, но мне нужно, чтобы это было сделано правильно , и, следовательно, изменения. я был действительно несправедливым?
Почему я согласился разрешить им кодировать, не имея функциональной спецификации?
Почему я не убедился, что они все поняли с первого раза?
Кто-нибудь оказывается в том же положении? Как вы думаете, есть лучший способ управлять внешними проектами?
-- ОБНОВИТЬ --
Спасибо за все мнения - после размышлений на весь опыт, я могу сделать вывод ...
Хотя я не был расплывчат в спецификациях со своей стороны, я, конечно, не делал их одержимыми, как предлагалось. Таким образом, выгода заключается в следующем: всегда будьте настолько конкретны, насколько это возможно - прочитайте свои спецификации также с их точки зрения и посмотрите, пропустили ли вы что-то. Повторите это по крайней мере три раза.
Просто указать, что код должен делать, этого недостаточно. Вы должны указать, как должен выглядеть код. Какова будет структура каталогов; даже имена файлов, если это возможно. Это избавит вас от неприятностей позже. Строго укажите правила кодирования, соглашения об именах переменных, внутренний формат документации и т. Д. Следите за тем, чтобы они следовали этим рекомендациям, и, если нет, кричите.
Требуйте функциональной спецификации с их стороны - настаивайте, чтобы она была написана перед любым кодом. Это поможет избежать путаницы и недоразумений.
Просмотрите код в процессе его разработки, чтобы выявить аномалии ранее и исправить их. Поговорите с ними хотя бы раз в день.
Наконец, попытайтесь установить с ними хорошие отношения. Заставьте их почувствовать, что вы цените их работу. Не заставляйте их преувеличивать, чтобы они соответствовали вашим рекомендациям - вместо этого попросите их сделать это и скажите им, что после завершения проекта вам будет намного проще поддерживать код.