Мені було доручено керувати проектом, який був переданий стороннім деяким українським розробникам.
Компанія найняла їх через Elance за фіксованою ціною . У цей момент мій начальник залишив мене в спокої, щоб впоратися з ними і виконати роботу. Я створив детальну специфікацію повної речі, яку потрібно було зробити.
Проект стосувався таких питань, як XMPP, RabbitMQ та Database. Під час своєї першої зустрічі з ними (завжди я) я ретельно пояснив, що їм потрібно зробити. Вони ніби це розуміли - і були дуже впевнені, що це буде зроблено легко.
Все йде нормально. Але через тиждень, коли ми знову зустрілися, вони були сповнені непорозумінь щодо того, що потрібно зробити. Коли я запитав одного з розробників, чи знає він XMPP, він сказав, що працює з ним вперше. Під час нашої першої зустрічі я дуже конкретно зазначив складність проекту та пов'язані з цим технології. Крім того, я неодноразово просив їх написати функціональну специфікацію саме того, ЯК вони це робитимуть. Але вони сказали "НІ" і наполягли на тому, щоб вони скоріше написали код. Я сказав добре.
Проект завершився через 3 тижні, і вони доставили необхідне. У цей момент я почав переглядати код. Здебільшого це було нормально, але є деякі важливі проблеми:
- вони жорстко закодували деякі речі, які потрібно було відокремити у конфігураційний файл
- було кілька конфігураційних файлів, які мені потрібно було консолідувати в одному
- вони написали абсолютно НЕ документацію
- деякі інші незначні зміни
Я попросив їх внести ці зміни (крім документації) - І у нас був аргумент.
Вони сказали, оскільки ціна була фіксована, я був несправедливим, коли просив їх внести будь-які зміни, коли вони заповнять робочий код. Вони працювали над проектом нерозумно багато часу і тепер просити нічого не було.
Нарешті тепер вони внесли зміни, і проект закінчився. Але це залишає деякі питання в моїй свідомості ...
Вони зробили те, що потрібно, але мені це було потрібно правильно , а отже, і зміни. чи справді я був несправедливим?
Чому я погодився надати їм код без функціональних специфікацій?
Чому я не переконався, що вони все зрозуміли вперше?
Хтось опиняється в тому самому становищі? Як ви вважаєте, чи є кращий спосіб керувати проектами, що передаються сторонніми компаніями?
- ОНОВЛЕННЯ -
Дякую за всі думки - після роздумів над усім досвідом я можу зробити висновок ...
Хоча я не був розпливчастим в технічних характеристиках з моєї сторони, я, звичайно, не робив їх залізними, як було запропоновано. Тож відбирайте: завжди будьте максимально конкретними - читайте свої характеристики також з їхньої точки зору і переконайтесь, що ви щось пропустили. Повторіть це не менше трьох разів.
Недостатньо лише вказати, який код повинен це робити. Ви повинні вказати, як повинен виглядати код. Якою буде структура каталогу; навіть імена файлів, якщо це можливо. Це позбавить вас від сильного роздратування пізніше. Суворо вкажіть інструкції щодо кодування, конвенції про іменування змінних, внутрішній формат документації тощо. Слідкуйте за тим, щоб вони дотримувались цих вказівок, а якщо ні - кричати.
Вимагайте функціональної специфікації з їхнього боку - наполягайте, щоб вона була написана перед будь-яким кодом. Це призведе до безлічі плутанини та непорозумінь.
Перегляньте код під час його розробки, щоб виявити аномалії раніше та виправити їх. Поговоріть з ними хоча б раз на день.
І нарешті, спробуйте зробити гарний звіт з ними. Дайте їм відчути, що ви цінуєте їхню роботу. Не натискайте на них перебільшено, щоб вони відповідали вашим рекомендаціям - замість цього вимагайте від них і скажіть, що це дозволить вам підтримати код так простіше, як тільки вони завершать проект.