TL;DR

Как инженер-программист, который к тому же заядлый путешественник, я решил уйти удаленно.

Я работаю в большой организации, в небольшой, гибкой команде, работающей над службой управления API (прокси, портал разработки и т. Д.) Для остальной части предприятия.

Эта статья представляет собой исчерпывающее (и долго читаемое) руководство о том, как я это сделал, и почему это было и остается успешным на моем «рабочем месте».

Мотивация

Перед отъездом я приступил к составлению четкого набора целей. Было бы неплохо иметь возможность сравнить эти видения и надежды с реальностью по прошествии первых двух месяцев. Я хотел:

  • Быть независимым от географического положения моего офиса.
  • Я хотел тратить меньше денег во время… путешествий или проживания в другой (желательно более теплой) стране!
  • Я хотел чаще видеться с семьей.

Беспокойства, которые у меня были перед отъездом

Часто мы немного беспокоимся, прежде чем кардинально изменить свою жизнь. Вот мой список:

  • Я не буду достаточно продуктивным, и команда подумает, что я расслабляюсь.
  • Я потеряю связь с членами команды. С ними будет неловко разговаривать, и уровень доверия упадет.
  • Подключение к Интернету будет проблематичным.

Реализация идеи

Все началось с вручения уведомления моему непосредственному руководителю. Я хотел реализовать эту идею в другой компании - уже «полностью удаленной». Я не думал, что мой нынешний работодатель согласится на мое увольнение из офиса.

Я был неправ! Должно быть, они видели во мне большую ценность в том, чтобы я работал удаленно, чем в поисках другого инженера-программиста. Я был с командой с самого начала (›3 года) и наблюдал за эволюцией управления API в нашем бизнесе до того уровня, который есть сейчас. Это должно быть помогло!

Мне нравится команда и продукт, над которым мы работаем, и оставаясь с командой в удаленном режиме, я достиг своей первой цели (независимость от физического местоположения), поэтому излишне говорить, что я принял соглашение!

Соглашение

Мы договорились, что я буду работать вне офиса в течение 3 месяцев, а затем вернусь в офис еще на 3 месяца, но только по понедельникам и пятницам. Мое рабочее время будет таким же, как у моих коллег, что позволит удаленное сопряжение.

Поэтому в этой статье основное внимание будет уделено тому, чтобы стать удаленным инженером-программистом, который уходит из офиса на некоторое время, но затем возвращается в офис на короткое время.

Готовим офис - аппаратно и программно!

Поскольку я был инициатором этого процесса, в мои обязанности входило исследование и покупка всего необходимого, например, веб-камеры и необходимого программного обеспечения.

Видеоконференцсвязь (Appear.in + камера Huddly GO + Mac Mini)

Я подумал, что было бы идеально создать захватывающий и цельный опыт. Я хотел иметь возможность видеть офис и слышать болтовню, когда захочу, без необходимости звонить моим коллегам. Нет ничего более разочаровывающего, чем создание видеосеанса, который завершается неудачно, в результате чего вы опаздываете на встречу на 5 минут. Я хотел, чтобы ссылка на видео была стабильной и не требующей обслуживания.

И я не против, чтобы они меня увидели. В конце концов, я хочу, чтобы они видели, что я профессионален и могу работать каждый день.

В прошлом у нас был успех, используя появляться.in, который в своей бесплатной версии позволяет создавать видеозалы или всегда на видеопортале для до 4 браузеров / сеансов. . Суммируя :

  • Создайте комнату на https://appear.in/
  • Поделитесь ссылкой с коллегами
  • Сходите / выходите из сеанса в любое удобное для вас время

Выбранная веб-камера - Huddly Go. Его сверхширокое поле зрения (FOV) 150 ° позволяет мне видеть все, что мне небезразлично - включая подставку и кухню. Он устанавливается на штатив, что позволяет использовать его в различных конфигурациях.

Микрофон - Jabra 510 Bluetooth. Я представлял себе, как он работает: его круглая форма и разнонаправленный микрофон позволят мне (как и камере) слышать все, что происходит вокруг нашей работы. площадь. Работает, если не очень хорошо. В офисах обычно бывает довольно шумно. На мой взгляд, Jabra 510 собирает слишком много этого шума (продолжайте читать, чтобы увидеть, как мы решили его во время сеансов парного программирования)

Платформа для всего этого - это Mac Mini. Может быть, мы могли бы пойти на что-нибудь подешевле. Может быть. Но мне нравятся Mac за их стабильность и безболезненную настройку.

Вердикт:

Appear.in просто работает. Huddly Go потрясающий, и мне нравится его FOV. Забудьте о необходимости планировать видеосвязь / сеансы. Просто откройте свой браузер, и ваша команда уже здесь. Он отлично работает и с соединениями LTE и 4G!

Изменения в нашем гибком процессе и XP (экстремальное программирование)

Ветвление Git / запросы на извлечение / проверка кода

Последние пару лет мы были сторонниками того, чтобы вносить наши изменения в основную ветку. Это позволило нам быстро доставить наш код и избежать потенциальных конфликтов слияния. Он отлично работал в (очень) небольшой команде.

Однако у него был серьезный недостаток - код, переданный в нашу ветку Master, легко пропускался другими членами команды, что иногда приводило к ненужным разногласиям между нами. И это может только ухудшиться, когда один из нас (или несколько) уйдет далеко. Нам нужно было изменить процесс.

Мы решили, что наш конвейер CI / CD будет выглядеть так:

  1. Инженеры (обычно пара) получают билет JIRA.
  2. Мы создаем новую ветку, названную в честь заявки (т. Е. APIMAN-123-Improve-websocket-support).
  3. Работа над тикетом завершена, изменения зафиксированы и отправлены на GitHub.
  4. Создается новый запрос на вытягивание и запускается проверка кода.
  5. Обсуждения, мы информируем наших коллег о недавно внесенных изменениях. На этом этапе мы можем внести поправки в наш код в результате обсуждения.
  6. Наша основная ветка использует функцию защиты веток GitHub. Прямая фиксация на главном запрещена, код должен быть одобрен (проверка кода), и сначала необходимо запустить автоматические тесты (это автоматизировано на нашем Дженкинсе)
  7. Перед объединением запроса на вытягивание с ветвью master запускается автоматическое задание конвейера Jenkins, которое отмечает последнюю фиксацию в ветке как успешно прошедшую или не прошедшую проверку нашей тестовой оснастки. Если это не удалось - мы должны исправить это перед объединением в master - добавив дополнительный уровень уверенности в том, что в продакшене все будет хорошо.
  8. При слиянии с master наш конвейер Jenkins повторно запускается (включая все наши тесты), и создаются окончательные артефакты (будь то RPM, NPM или выпуск на сервере).

Вышеупомянутый процесс дает нам душевное спокойствие и делает наш процесс обмена знаниями намного лучше, чем раньше - это происходит естественно.

Парное программирование

Все мы знаем о преимуществах парного программирования. Нет сомнений в том, что это замечательный инструмент для зрелой и опытной команды разработчиков программного обеспечения. Это позволяет нам делиться знаниями во время работы, помогает нам писать лучший код - и этот список можно продолжить.

Практика парного программирования в офисе очень важна. При удаленной работе - незаменим. Это самая важная техника, и я не могу ее подчеркнуть!

Это позволяет поддерживать постоянную связь с другими членами команды, чтобы вы не отдалились от них. Ха, к нам даже присоединились новички, и первый контакт был в Slack или по нашей ссылке на видео Appear.in. И это было совсем не неловко. Работа сделана, и вы все еще можете побеседовать во время сеанса программирования.

Совместное использование экрана / видео / голос

Slack - это наш предпочтительный инструмент, когда речь идет о совместном использовании экрана и подключении к видео при объединении или личном общении с другими членами команды.

Мы заключили договор Enterprise, который позволяет вам делиться экраном и иметь многостороннюю видеосвязь с несколькими участниками одновременно.

Очень важным аспектом удаленного сопряжения является качество звука / голоса. Важнейшим фактором при этом является наличие качественной гарнитуры с микрофоном, которая убирает весь шум в загруженном офисе с открытой планировкой. Мы использовали недорогие комплекты Sennheiser, а именно: SC 70 USB Black.

IDE

В Microsoft Visual Code Studio есть классная функция под названием «Live Share». Это позволяет вам поделиться сеансом IDE с несколькими участниками. Для его включения необходимо установить расширение «Live Share». Хост общего доступа - это тот, кто контролирует файлы и распространяет их по сети с другими. Он работает без сбоев и является полезной функцией.

Моббинг

Моббинг - это нормально. Но, на наш взгляд, не более того. Это полезно в ограниченном количестве. Идея состоит в том, что несколько инженеров-программистов сидят перед компьютером, и все они работают над одной задачей, внося идеи и код одновременно. Вроде работает, но через некоторое время кодеры засыпают и легко отвлекаются.

Проблема усугубляется, когда моббинг уходит далеко. Очень сложно сформулировать краткие и последовательные идеи относительно того, где взять код дальше.

Мы заставили это работать так, что мы применяем моббинг в малых дозах. Обычно 2 часа в неделю, и мы заранее точно знаем, над какой проблемой будем работать (обычно в конце каждого сеанса подбирается новая проблема, которая записывается в тикете JIRA - таким образом мы готовы к следующей неделе) .

Мы проводим большую часть нашего сеанса моббинга для решения проблемы технического долга, который накопился в нашем основном продукте - прокси-сервере управления API.

Agile Ceremonies / Sprint Planning / Retros / Разные встречи

Без лишних слов позвольте мне объяснить, как мы проводим церемонии Agile удаленно.

Мы все подключаемся через Slack, каждый из которых пользуется своим ноутбуком. Это позволяет каждому видеть реакцию других и заставляет удаленных сотрудников чувствовать себя наравне с другими. Как и в парном программировании - все мы пользуемся гарнитурами с однонаправленными микрофонами. Он работает нормально, но мы попробуем гарнитуры с шумоподавлением, чтобы уменьшить помехи в небольших помещениях, например в конференц-залах.

Первые несколько недель «цифрового кочевника»

Как и во всем, что мы делаем впервые, здесь присутствует определенный стресс и неуверенность. Вот что получилось в мой первый день удаленного доступа:

«На начальном этапе у нас возникли проблемы с качеством подключения с помощью функции появления. Оказалось, что это MacMini, подключающийся через наш корпоративный прокси-сервер, который не очень хорошо работает с подключением по UDP. Соединения UDP часто блокируются корпоративными прокси-серверами, и по умолчанию по умолчанию возвращается режим HTTPS / TLS, что означает низкое качество видео и звука. Это НЕ очень хорошо для постоянно доступного видеопортала, к которому мы стремились. Мы пытаемся создать иммерсивный опыт, при котором я должен чувствовать себя по-прежнему частью команды и иметь возможность попросить совета у любого члена команды, и наоборот.

Это то, что я тогда написал в своем дневнике. На следующий день я попросил команду подключить Mac Mini к сети Wi-Fi, а не через кабель Ethernet - это сразу устранило проблему. Наш шлюз LAN сначала маршрутизирует через прокси!

Думаю, все могло быть так - если бы качество видео не было улучшено - был бы я там, где нахожусь сегодня? Я мог бы стать большой катастрофой, но в конце концов это сработало.

Еще одна цитата из моего дневника:

«Перерывы на обед не должны быть скучными. Кто-нибудь помнит дни, когда во время обеденного перерыва обычно съедали бутерброд за столом? Поскольку сейчас мы находимся в Берлине недалеко от Weißensee, мы решили пойти поплавать на обеденный перерыв! За час нам удалось добраться до озера, которое находится в 1 км, переплыть его и вернуться обратно. Затем прогулка до квартиры, которую мы снимаем неподалеку, и возвращение к работе. Результат!" 🏊

И еще один из кафе на оживленной рыночной площади в Кракове:

«9:30 утра. Приехал в кафе и заказал завтрак и кофе. Я намерен поработать здесь, а затем переехать в другое место, когда / если мне наскучит окружающая обстановка. Ноутбук отключен, мобильный телефон подключен.

9:45, наше время выступления. Приходит официантка с моими тостами с беконом и сыром. Один из моих тостов оказывается в моем чае, и карета, которую раньше видели вдалеке, проезжает с шумом в децибелах, равным только Jumbo-Jet. Стендап для меня испорчен!

10:00 утра, трубач церкви Мариацких начинает играть Хейнал, как будто вот-вот начнется монгольское вторжение в Польшу. Как мне здесь сконцентрироваться и написать ценное программное обеспечение? »

Вы уловили суть, верно? Не всегда возможно работать из оживленного кафе на оживленной рыночной площади, где есть конные экипажи и трубачи, напоминающие нам о монгольском вторжении в Польшу!

Благополучие удаленных сотрудников

Легко попасть в нездоровую сферу удаленной работы. Заманчиво оставаться в пижаме или работать с постели! Вот несколько советов, которые помогли мне преодолеть это:

Раннее начало / доступность весь день

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

Стресс / тревога

Страх быть осужденным за то, что я не помогал коллегам по работе, был главным в моем списке «забот» в начале этого поста. Я боялся, что они подумают, что я расслабляюсь и стараюсь не изо всех сил.

Однако это чувство длилось недолго. Думаю, мы все расставили в правильном порядке. Настройка правильная, процесс правильный, и технология работает.

Один из первых отзывов, который я получил, был от моего менеджера, который тогда сказал: Раф - эта штука работает лучше, чем я ожидал. Такое ощущение, что ты не ушел. Это безупречно.

Это сняло с моих плеч всю тяжесть. Я понял, что удаленная работа работает.

Обычные индивидуальные встречи

Независимо от того, новичок вы в удаленной рабочей среде или нет, не следует недооценивать необходимость встречаться с другими членами вашей команды на регулярной основе. Множество решений принимает кофемашина в офисе, и упущенная возможность поговорить со сверстниками обязательно приведет вас в «отчужденный» угол. Помимо регулярных сеансов удаленного сопряжения, запланируйте не менее двух недель индивидуальной встречи с вашим менеджером и, если необходимо, с другими членами вашей команды.

Делайте регулярные перерывы и занимайтесь спортом

В офисе мы регулярно делаем перерывы. Мы идем выпить кофе или съесть тот праздничный торт, который кто-то принес.

При удаленной работе тоже нужно регулярно растягиваться и вставать. Это полезно для спины. Я пользуюсь Apple Watch, и поразительно, что с тех пор, как я ушел удаленно (будь то из дома или другого места), мне кажется, что я стою меньше, чем в офисе. Планируйте регулярные перерывы с вашим удаленным партнером - ваша спина будет вам за это благодарна.

Резюме

Я вернулся в Великобританию. Закончил первые три месяца удаленной работы в другой стране. Это была настоящая проверка моих сильных и слабых сторон и способностей. Теперь я готов провести зимние месяцы дома с регулярным посещением офиса.

Одно можно сказать наверняка - я почти уверен, что в ближайшее время не вернусь в офис на полную ставку!

Что работает:

  • Всегда на связи, хорошая камера, качественные микрофоны и гарнитуры
  • Парное программирование
  • Быть доступным / выглядеть профессионально / рано вставать. Придерживайтесь рабочего времени вашего офиса.
  • Занятия спортом (!)
  • Обычные индивидуальные встречи
  • Никаких поездок на работу (!) - экономия времени (в моем случае около 3 часов в день)
  • Мобильные соединения LTE / 4G

Чего нет:

  • Работа на открытом, удаленном месте, так как слишком много отвлекающих факторов. Извините, ребята, не работаю на скамейке в парке или в кафе.
  • Плохие аудиосистемы.

Следующий:

  • Как мои надежды и видения соотносятся с реальностью? Является ли жизнь в другой стране святым Граалем удаленной работы? Смотрите это пространство!

Кредиты: