Распределенная разработка - опыт JivoSite
Команда разработки JivoSite всегда была и остается распределенной, причем мы с Тимуром Валишевым создавали ее в 2012 году, не имея за плечами собственного опыта удаленной работы. Сейчас у нас больше 50 разработчиков, и я уверен, что наши сотрудники довольны преимуществами, которые им дает работа вне офиса.
Если вы тоже думаете о создании распределенной команды разработки, учтите несколько нюансов, о которых я расскажу ниже. Отмечу, что статья актуальна преимущественно для России и других стран, где культура удаленной работы только формируется.
Подбор сотрудников
При выборе кандидатов на удаленную работу вы не ограничиваетесь одним городом и его зарплатной вилкой, но есть некоторые особенности.
Если вы приглашаете специалиста без опыта дистанционной работы, то велик риск того, что он не пройдет испытательный срок. Мы неоднократно сталкивались с тем, что неплохие кандидаты с отличными рекомендациями с прошлого очного места работы не могут себя настроить на удаленную работу, вплоть до того, что перестают выходить на связь. Вероятность такого исхода я оцениваю в 30%. При этом, если у кандидата вообще нет серьезного опыта работы, то таких проблем не возникает.
Мы всегда просим кандидата показать нам свое рабочее место. Если отдельного помещения для работы нет, то приходим к договоренности, что он снимает отдельную квартиру либо маленький офис. Многим кажется, что программировать и тестировать софт можно и на кухне, и с детьми в соседней комнате, но, это — самообман и заблуждение. Эффективно работать можно только в спокойной обстановке.
Конверсия из кандидатов в сотрудники при наборе распределенной команды меньше. Будьте к этому морально готовы и спокойно относитесь к промахам. И, конечно, четко обговаривайте с кандидатами испытательный срок, в JivoSite он составляет три месяца.
Включение в работу
Процесс включения в удалённую работу примерно такой же, как и в офисе. Нужно подписать NDA, получить доступы в почту/Slack/трекер/cvs, почитать документацию, настроить окружение и погрузиться в проект. Пройдя этот процесс вместе с кандидатами не менее 20 раз, я могу дать следующие рекомендации:
- Обучайте кандидатов гигиене обращения с паролями и SSH-ключами. Кажется смешным, но большая часть кандидатов не пользуются менеджерами паролей, не защищают ssh-ключи, и вообще слабо представляют связанные с этим риски. Это всегда легко исправить: пропишите политику хранения ключей и паролей и ознакомьте с ней сотрудников.
- Автоматизируйте запуск отладочного окружения. На старте непросто выделить на это время, но я очень сожалею, что мы не стали делать это намного раньше.
Сейчас есть большой выбор инструментов авто-развертывания, таких как Ansible, Docker, Vagrant и так далее. В нашей компании основательно используется Ansible, но так было не всегда. Ранее у нас был образ виртуальной машины, который мы актуализировали руками каждый раз при приеме на работу нового кандидата. Это очень сильно тормозило погружение, отнимало кучу времени и сил. Хотелось бы подчеркнуть следующее: если у вас уже двое сотрудников, вы планируете расширяться — займитесь авто-развертыванием.
Сейчас у новичка в JivoSite полный запуск отладочного окружения занимает 15 минут: заполняется несколько полей на специальном сайте и, после небольшого ожидания, вы сможете зайти браузером и терминалом в свою личную облачную копию JivoSite. У нас это реализовано на связке Amazon EC2 + Ansible.
Без автоматизации этот процесс занимал день-два кропотливой работы новичка, при этом, ему должен был помогать кто-то из команды. Это производило впечатление неорганизованности, и сильно тормозило включение в работу. После того, как сотрудник освоился, он мог настроить локальный отладочный сервер у себя на виртуальной машине. Но, с тех пор как мы запустили облачные дев-сервера, практически никто из команды не пользуется локальными серверами.
Каждый облачный отладочный сервер обходится нам примерно в 10$ в месяц, но, при этом, мы экономим немало времени. При возникновении проблемы, вместо звонка с демонстрацией экрана, можно просто зайти на сервер и помочь с решением.
Кроме того, мы записали несколько видеороликов для новичков с инструкциями. Это существенно снизило коммуникационные издержки при расширении команды: разобраться в нюансах и начать разработку можно с помощью видео.
Организация работы
Утренние планерки
Несмотря на то, что удалённая работа предполагает гибкий график, мы проводим ежедневные планерки в 10 утра, обязательные для всех. Время митинга подобрано специально на начало рабочего дня большинства участников команды. Планерки дисциплинируют и настраивают на рабочий лад, помогают почувствовать себя эффективным членом команды. Для дистанционной работы это особенно важно.
Утренние планерки мы ввели не сразу, и, оглядываясь назад, я понимаю, что мы много упустили. Тимлиды тратили гораздо больше времени на то, чтобы собрать результаты вчерашней работы и координировать команду. В Scrum/Agile для этих целей используются утренние стендапы. Но если вы работаете распределенно и не используйте эти методологии — тем не менее, проводите планерки.
Качество видеосвязи
Все митинги и звонки в команде проводятся только по видеосвязи. Так нам комфортнее с психологической точки зрения. Программист, работающий удаленно, может вообще не выходить из дома, и, в буквальном смысле, одичать. Это — крайность, но мы не хотим допустить подобного с нашими сотрудниками, даже если они убежденные хикки или социопаты. Ежедневная видеосвязь с коллегами гарантирует, что человек приводит себя и своё рабочее место в порядок. Соответственно, будет порядок и в делах.
Важный момент — качество аудио и видеосвязи. Оно должно быть идеальным, и если это не так — то это проблема, требующая немедленного решения. Качество связи зависит от характеристик и типа оборудования, интернет-канала и сервиса связи. Нужен контроль всех параметров.
В случае возникновения у сотрудника проблемы с каналом мы просим сменить тариф/провайдера, подключиться к роутеру через провод, передвинуть wi-fi поближе, выключать торренты и так далее. Проблему с оборудованием мы решили, купив всем USB-гарнитуры. Исходя из нашего опыта могу отметить, что bluetooth и обычные гарнитуры работают стабильно плохо у всех. О громкой связи речь, как правило, не идет — недопустимо отвлекать коллег окружающими вас посторонними звуками.
Касаемо сервиса связи, в погоне за качеством мы перешли с Google Hangouts на Zoom. Здесь можно выбрать более подходящее по затратам. Но, самое главное — если вам кажется, что связь не идеальна — ищите дальше.
Важно убедиться, что сотрудники созваниваются друг с другом без колебаний. Нельзя недооценивать склонность IT-специалистов к переписке через чаты, особенно, если они очно друг с другом незнакомы. Для некоторых задач это вполне нормально, но, если возникает срочная проблема, то звонок необходим. Иначе вероятно следующее: «Я ему вчера написал, он мне не ответил». В первый раз созвонитесь втроем вместе с новым сотрудником и, как правило, этого достаточно.
Съезды
Если вы начали работать распределено, но еще не проводили съездов, то у вас могут возникнуть сомнения в их необходимости. Действительно, всё и так идет сравнительно неплохо, а для организации съезда нужно потратить много времени и средств. Следует относиться к съезду не как к расходам, а как к важнейшей инвестиции. Сложно представить что-то более действенное для улучшения коммуникации людей, которые видели друг друга только по видеосвязи.
Наш первый съезд прошел на второй год жизни компании, когда нас было около семи человек. С тех пор мы проводим съезды ежегодно. Программа: минимум — три дня, днем — совместная работа/обмен опытом/обучение, вечером — пейнтбол и другие виды тимбилдинга. Несколько советов по проведению съездов из нашего опыта:
-
Организация перелетов, трансферов, проживания — очень большая работа. Если у вас нет человека, который мог бы это сделать, то стоит рассмотреть вариант привлечения специального агентства;
-
Следует отправить человека для проверки качества интернета (если он вам необходим). На словах интернет всегда отличный, на деле — почти всегда оставляет желать лучшего. Мы сейчас закупили свое походное сетевое оборудование;
-
Убедитесь, что на месте есть хороший конференц-зал, что он будет вам доступен в течение времени, отведенного на работу. Иногда в отелях есть конференц-залы в подвале — работать продолжительное время в таких условиях невозможно. С другой стороны, у нас был опыт работы прямо на пластиковых столах на улице, практически в лесу — всем понравилось;
-
Заранее планируйте программу докладов и обучений, с разбивкой по часам. На съезде вы работаете в отличном от обычного ритме, приходится решать множество организационных и других вопросов, поэтому имеет смысл всё заранее распланировать.
Выводы по организации удаленной работы отдела разработки
-
Организация разработки в России с помощью удаленных сотрудников возможна как для продукта средней сложности, так и для сложных систем. Все зависит от организации и координации рабочего процесса.
-
Компания, использующая удаленных разработчиков, экономит значительные средства на аренде офиса и получает более квалифицированных и устойчивых специалистов.
-
Организация удаленной разработки требует использование специального программного обеспечения и жесткого регламента в плане безопасности.
-
Важно понимать, что удаленная работа предполагает некоторые проблемы с одиночеством и самокопанием. Не все могут продолжительное время работать самостоятельно на одном и том же уровне, а все общение сводить к картинкам на экране или словам в чатике. Людям необходима эмоциональная разгрузка и чувство сплоченности в команде.
Поэтому обязательно уделите внимание видео-конференциям и регулярным съездам. Это дает представление о том, что за никнеймами в чате и аватарками находятся живые люди.
© vc.ru