Мой опыт и топ-7 советов о том, как работать с аутсорсом. 🚀
Сегодня будет более практичная статья. Представим вам, как менеджеру разработки, поручили выполнить определенное задание на аутсорсе. Конечно же, хочется минимизировать время, которое команда будет тратить на “обслуживание” аутсорса, на исправление проблем после приемки задач. Сейчас я расскажу 2 примера из своей практики и дам чеклист подготовки к использованию аутсорса.
Пример 1. Неуспешный 😕
Мне было необходимо написать модуль для приложения, в качестве исполнителей мы выбрали команды из Индии. Провели несколько созвонов с представителями, рассказали наши ожидания, договорились по срокам и требованиям и начали работать. В тот момент я не считал, что что-то может пойти не так. Но не тут-то было.
Спустя несколько недель мы попросили показать результат и код, моему удивлению не было предела: стек выбран не тот, что мы проговаривали, функции работают не так, как надо было. Все закончилось тем, что мы завершили с ними работу и практически весь модуль переписали сами. Печально 😔
Пример 2. Успешный 😃
Мы решили отдать задачу по написанию расширения для нашего приложения моему знакомому, о котором я получил хорошие отзывы от его коллег. Мы потратили примерно час на обсуждение задачи и деталей, написали текстом требования по стеку, предоставили спецификацию API. После того, как человек начал работать, мы сверялись примерно раз в 2 дня. Да, были правки, но нам удавалось их править в этот же день. Дополнительно мы выкатывали требования по написанию автотестов для модуля, что человек выполнил в нужном объеме. В итоге мы успешно выполнили задачи с достаточным качеством, в том числе и техническим. Да, нам приходилось созваниваться с аутсорсером, но мы потратили времени меньше, чем если бы писали сами. Успех! 🎉
А теперь собственно чеклист. Каждый его пункт я буду описывать с учетом примеров выше.
Изолированная задача 🔍
Чем более изолированная задача, тем проще ее выполнить на аутсорсе. В обратном случае необходимо потратить время на погружение аутсорсера в контекст. Хорошие кандидаты для задач “на внешку” - отдельные модули, классы, сервисы.
Понятные требования 📝
Все требования, включая функциональные, нефункциональные, тесты, автотесты, должны быть не только проговорены, но и зафиксированы либо письмом, либо в документе. В моем неуспешном примере мы не зафиксировали требования, только проговорили, поэтому получилась ситуация, когда исполнитель требования выдумывал сам.
Синки обязательны 🕒
Необходимо проверять, туда ли идет проект или нет. Чем меньше срок проекта, тем чаще должны быть синки. В моем успешном примере проект длился около 2 недель. В случае проекта на несколько месяцев достаточно синхронизироваться раз в неделю-две.
Определите приемку ✅
Еще перед началом необходимо определить, как будет происходить приемка задачи. Это будет просто демо работы или интеграция с чем-то уже существующим. В моем успешном примере аутсорсер использовал готовое приложение, для которого он писал модуль, поэтому мы принимали уже работающую задачу, а не просто код.
Определите контактное лицо 👤
Работа в изоляции невозможна, в любой момент могут возникнуть вопросы или уточнения. Поэтому надо иметь в виду, что необходимо выделить время для коммуникации по проекту. В зависимости от сложности, время может варьироваться от 0.5 часа в неделю до 2 часов за 2 недели.
Автотесты сильно помогают 🧪
В дополнение к зафиксированным требованиям стоит использовать автотесты, которые позволяют проверить, все ли сделано как надо. Причем аутсорсеры могут использовать эти тесты на своей стороне, прогоняя их после выполнения задач.
Найдите общий язык 🌍
Или другого исполнителя. Если вы не можете эффективно коммуницировать с аутсорсерами, вероятность успеха проекта будет стремиться к нулю. В моем неуспешном проекте не вся моя команда могла свободно говорить на английском, и не вся команда аутсорс-студии знала английский на нужном уровне. Поэтому часто были “глухие” телефончики, из-за чего возникли проблемы с выполнением задачи.
Итого 📌
Данные советы - лишь часть всего того, что можно обсудить по работе с аутсорсом: я не включил сюда вопросы по договорам, решение конфликтов, метрики. Но, несмотря на это, мои советы помогут вам сделать работу с аутсорсом более эффективной и менее нервной. Я считаю, что аутсорс - это хороший инструмент, и им надо пользоваться.
Всем хорошего дня! ☀️