Распределенная разработка - опыт JivoSite
Команда разработки JivoSite всегда была и остается распределенной, причем мы с Тимуром Валишевым создавали ее в 2012 году, не имея за плечами собственного опыта удаленной работы.
Сейчас у нас больше 50 разработчиков, и я уверен, что наши сотрудники довольны преимуществами, которые им дает работа вне офиса.
Если вы тоже думаете о создании распределенной команды разработки, учтите несколько нюансов, о которых я расскажу ниже.
Отмечу, что статья актуальна преимущественно для России и других стран, где культура удаленной работы только формируется.

Подбор сотрудников

При выборе кандидатов на удаленную работу вы не ограничиваетесь одним городом и его зарплатной вилкой, но есть некоторые особенности.
Если вы приглашаете специалиста без опыта дистанционной работы, то велик риск того, что он не пройдет испытательный срок.
Мы неоднократно сталкивались с тем, что неплохие кандидаты с отличными рекомендациями с прошлого очного места работы не могут себя настроить на удаленную работу, вплоть до того, что перестают выходить на связь.
Вероятность такого исхода я оцениваю в 30%.
При этом, если у кандидата вообще нет серьезного опыта работы, то таких проблем не возникает.
Мы всегда просим кандидата показать нам свое рабочее место.
Если отдельного помещения для работы нет, то приходим к договоренности, что он снимает отдельную квартиру либо маленький офис.
Многим кажется, что программировать и тестировать софт можно и на кухне, и с детьми в соседней комнате, но, это — самообман и заблуждение. Эффективно работать можно только в спокойной обстановке.
Конверсия из кандидатов в сотрудники при наборе распределенной команды меньше.
Будьте к этому морально готовы и спокойно относитесь к промахам.
И, конечно, четко обговаривайте с кандидатами испытательный срок, в JivoSite он составляет три месяца.

Включение в работу

Процесс включения в удалённую работу примерно такой же, как и в офисе.
Нужно подписать NDA, получить доступы в почту/Slack/трекер/cvs, почитать документацию, настроить окружение и погрузиться в проект.
Пройдя этот процесс вместе с кандидатами не менее 20 раз, я могу дать следующие рекомендации:

  1. Обучайте кандидатов гигиене обращения с паролями и SSH-ключами.
    Кажется смешным, но большая часть кандидатов не пользуются менеджерами паролей, не защищают ssh-ключи, и вообще слабо представляют связанные с этим риски.
    Это всегда легко исправить: пропишите политику хранения ключей и паролей и ознакомьте с ней сотрудников.
  2. Автоматизируйте запуск отладочного окружения.
    На старте непросто выделить на это время, но я очень сожалею, что мы не стали делать это намного раньше.

Сейчас есть большой выбор инструментов авто-развертывания, таких как Ansible, Docker, Vagrant и так далее.
В нашей компании основательно используется Ansible, но так было не всегда.
Ранее у нас был образ виртуальной машины, который мы актуализировали руками каждый раз при приеме на работу нового кандидата.
Это очень сильно тормозило погружение, отнимало кучу времени и сил.
Хотелось бы подчеркнуть следующее: если у вас уже двое сотрудников, вы планируете расширяться — займитесь авто-развертыванием.
Сейчас у новичка в JivoSite полный запуск отладочного окружения занимает 15 минут: заполняется несколько полей на специальном сайте и, после небольшого ожидания, вы сможете зайти браузером и терминалом в свою личную облачную копию JivoSite.
У нас это реализовано на связке Amazon EC2 + Ansible.
Без автоматизации этот процесс занимал день-два кропотливой работы новичка, при этом, ему должен был помогать кто-то из команды.
Это производило впечатление неорганизованности, и сильно тормозило включение в работу.
После того, как сотрудник освоился, он мог настроить локальный отладочный сервер у себя на виртуальной машине.
Но, с тех пор как мы запустили облачные дев-сервера, практически никто из команды не пользуется локальными серверами.
Каждый облачный отладочный сервер обходится нам примерно в 10$ в месяц, но, при этом, мы экономим немало времени.
При возникновении проблемы, вместо звонка с демонстрацией экрана, можно просто зайти на сервер и помочь с решением.
Кроме того, мы записали несколько видеороликов для новичков с инструкциями.
Это существенно снизило коммуникационные издержки при расширении команды: разобраться в нюансах и начать разработку можно с помощью видео.

Организация работы

Утренние планерки

Несмотря на то, что удалённая работа предполагает гибкий график, мы проводим ежедневные планерки в 10 утра, обязательные для всех.
Время митинга подобрано специально на начало рабочего дня большинства участников команды.
Планерки дисциплинируют и настраивают на рабочий лад, помогают почувствовать себя эффективным членом команды.
Для дистанционной работы это особенно важно.
Утренние планерки мы ввели не сразу, и, оглядываясь назад, я понимаю, что мы много упустили.
Тимлиды тратили гораздо больше времени на то, чтобы собрать результаты вчерашней работы и координировать команду.
В Scrum/Agile для этих целей используются утренние стендапы.
Но если вы работаете распределенно и не используйте эти методологии — тем не менее, проводите планерки.

Качество видеосвязи

Все митинги и звонки в команде проводятся только по видеосвязи.
Так нам комфортнее с психологической точки зрения.
Программист, работающий удаленно, может вообще не выходить из дома, и, в буквальном смысле, одичать.
Это — крайность, но мы не хотим допустить подобного с нашими сотрудниками, даже если они убежденные хикки или социопаты.
Ежедневная видеосвязь с коллегами гарантирует, что человек приводит себя и своё рабочее место в порядок.
Соответственно, будет порядок и в делах.
Важный момент — качество аудио и видеосвязи.
Оно должно быть идеальным, и если это не так — то это проблема, требующая немедленного решения.
Качество связи зависит от характеристик и типа оборудования, интернет-канала и сервиса связи.
Нужен контроль всех параметров.
В случае возникновения у сотрудника проблемы с каналом мы просим сменить тариф/провайдера, подключиться к роутеру через провод, передвинуть wi-fi поближе, выключать торренты и так далее.
Проблему с оборудованием мы решили, купив всем USB-гарнитуры.
Исходя из нашего опыта могу отметить, что bluetooth и обычные гарнитуры работают стабильно плохо у всех.
О громкой связи речь, как правило, не идет — недопустимо отвлекать коллег окружающими вас посторонними звуками.
Касаемо сервиса связи, в погоне за качеством мы перешли с Google Hangouts на Zoom.
Здесь можно выбрать более подходящее по затратам.
Но, самое главное — если вам кажется, что связь не идеальна — ищите дальше.

Важно убедиться, что сотрудники созваниваются друг с другом без колебаний.
Нельзя недооценивать склонность IT-специалистов к переписке через чаты, особенно, если они очно друг с другом незнакомы.
Для некоторых задач это вполне нормально, но, если возникает срочная проблема, то звонок необходим.
Иначе вероятно следующее: «Я ему вчера написал, он мне не ответил».
В первый раз созвонитесь втроем вместе с новым сотрудником и, как правило, этого достаточно.

Съезды

Если вы начали работать распределено, но еще не проводили съездов, то у вас могут возникнуть сомнения в их необходимости.
Действительно, всё и так идет сравнительно неплохо, а для организации съезда нужно потратить много времени и средств.
Следует относиться к съезду не как к расходам, а как к важнейшей инвестиции.
Сложно представить что-то более действенное для улучшения коммуникации людей, которые видели друг друга только по видеосвязи.
Наш первый съезд прошел на второй год жизни компании, когда нас было около семи человек.
С тех пор мы проводим съезды ежегодно.
Программа: минимум — три дня, днем — совместная работа/обмен опытом/обучение, вечером — пейнтбол и другие виды тимбилдинга.
Несколько советов по проведению съездов из нашего опыта:

  • Организация перелетов, трансферов, проживания — очень большая работа.
    Если у вас нет человека, который мог бы это сделать, то стоит рассмотреть вариант привлечения специального агентства;
  • Следует отправить человека для проверки качества интернета (если он вам необходим).
    На словах интернет всегда отличный, на деле — почти всегда оставляет желать лучшего.
    Мы сейчас закупили свое походное сетевое оборудование;
  • Убедитесь, что на месте есть хороший конференц-зал, что он будет вам доступен в течение времени, отведенного на работу.
    Иногда в отелях есть конференц-залы в подвале — работать продолжительное время в таких условиях невозможно.
    С другой стороны, у нас был опыт работы прямо на пластиковых столах на улице, практически в лесу — всем понравилось;
  • Заранее планируйте программу докладов и обучений, с разбивкой по часам.
    На съезде вы работаете в отличном от обычного ритме, приходится решать множество организационных и других вопросов, поэтому имеет смысл всё заранее распланировать.

Выводы по организации удаленной работы отдела разработки

  1. Организация разработки в России с помощью удаленных сотрудников возможна как для продукта средней сложности, так и для сложных систем. Все зависит от организации и координации рабочего процесса.
  2. Компания, использующая удаленных разработчиков, экономит значительные средства на аренде офиса и получает более квалифицированных и устойчивых специалистов.
  3. Организация удаленной разработки требует использование специального программного обеспечения и жесткого регламента в плане безопасности.
  4. Важно понимать, что удаленная работа предполагает некоторые проблемы с одиночеством и самокопанием.
    Не все могут продолжительное время работать самостоятельно на одном и том же уровне, а все общение сводить к картинкам на экране или словам в чатике.
    Людям необходима эмоциональная разгрузка и чувство сплоченности в команде.

Поэтому обязательно уделите внимание видео-конференциям и регулярным съездам.
Это дает представление о том, что за никнеймами в чате и аватарками находятся живые люди.
pcnews.ru/