Используйте расширение VS Code Live Share, чтобы упростить удаленную работу с одноранговыми узлами

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

В этой статье мы рассмотрим некоторые преимущества парного программирования и то, как вы можете использовать такие технологии, как расширение Visual Studio Code Live Share, чтобы продолжить удаленное сопряжение программ со своими коллегами.

Что такое парное программирование?

Начнем с краткого определения. Мы определим парное программирование как метод разработки, при котором два разработчика пишут код на одной рабочей станции. Обычно это означает только один компьютер и одну клавиатуру. Разработчик с клавиатурой «управляет», а разработчик без клавиатуры «наблюдает» или «ориентируется».

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

Преимущества парного программирования

Итак, зачем кому-то это делать? Два разработчика работают над одним и тем же одновременно? Конечно, это пустая трата времени. Не могли бы вы написать вдвое больше кода, если бы разработчики работали независимо на своих машинах?

Это, безусловно, веские аргументы, и их стоит изучить. Итак, давайте посмотрим на преимущества парного программирования. Что хорошего мы получаем от совместной работы двух разработчиков?

Возможности обучения и наставничества

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

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

Обмен знаниями

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

Предотвращение ошибок

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

Повышение навыков межличностного общения

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

Уменьшение количества дефектов и повышение производительности

Наконец, что, пожалуй, наиболее интересно, исследования показали, что, когда инженеры объединяют программы, они пишут лучший код с меньшим количеством ошибок. Дополнительные затраты времени на разработку, связанные с совместной работой двух человек, оцениваются в 15%. Но если подумать о том, сколько времени вы сэкономили за счет меньшего количества проблем со службой поддержки и меньшего количества времени, затрачиваемого на отладку, вы можете обнаружить, что парное программирование на самом деле увеличивает продуктивность!

Параллельное программирование удаленно

Итак, мы установили, что парное программирование имеет много преимуществ. Но как нам объединить программы удаленно? COVID-19 вынудил многие компании принять политику удаленной работы, даже те компании, которые, возможно, изначально были очень противны идее удаленной работы.

Что касается меня, я обычно работал в офисе, но с марта 2020 года работаю удаленно, и мне это нравится! Встречи Zoom и сообщения Slack стали моими методами общения по умолчанию. А как насчет парного программирования?

Один из вариантов может выглядеть примерно так:

  1. Разработчики 1 и 2 вместе участвуют в видеозвонке.
  2. Dev 1 запускается как водитель, а Dev 2 запускается как наблюдатель-навигатор.
  3. Dev 1 показывает свой экран и начинает писать код, пока Dev 2 перемещается.
  4. Когда приходит время сменить роли, разработчик 1 фиксирует написанное и помещает его в ветку удаленного репозитория.
  5. Dev 2 скачивает последний код из ветки.
  6. Dev 2 показывает свой экран и начинает писать код, пока Dev 1 перемещается.
  7. Когда приходит время снова сменить роли, Dev 2 фиксирует написанное и отправляет это в ветку.
  8. Повторяйте шаги 3–7, пока сеанс парного программирования не закончится.

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

Возникает вопрос, есть ли способ сотрудничать без необходимости фиксировать код между сменой ролей?

Ответ - да, есть! Visual Studio Code (VS Code) имеет удобное расширение под названием Live Share, которое помогает упростить процесс программирования удаленной пары. Live Share позволяет вам делиться своим кодом, пока другие следят за VS Code на своем компьютере. Но это еще не все - вы даже можете поделиться своим локальным сервером или экземпляром терминала!

Как использовать VS Code Live Share

Вы можете бесплатно найти расширение VS Code Live Share на торговой площадке Visual Studio. После нажатия кнопки Установить и перезапуска приложения VS Code вы готовы к совместной работе! У них есть отличные инструкции по установке и краткое руководство по их листингу на торговой площадке по той же ссылке, что и выше, поэтому я настоятельно рекомендую следовать там.

Чтобы поэкспериментировать с этим расширением, Я создал простой проект Node.js, размещенный на Heroku. Я открыл каталог проекта в VS Code на своем компьютере, щелкнул значок Live Share в левой части экрана, а затем щелкнул Поделиться, чтобы создать новый сеанс совместной работы.

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

После входа в систему мне был предоставлен URL-адрес сеанса совместной работы, которым я мог поделиться одновременно с 30 людьми.

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

На моем втором компьютере, как только был предоставлен доступ, VS Code открыл каталог проекта на моем компьютере. Это действительно здорово! Мне даже не нужно было извлекать код локально или клонировать репозиторий GitHub.

Когда в сеансе участвует несколько человек, отображается курсор каждого человека, и вы можете сотрудничать в режиме реального времени, как при совместном редактировании документа Google. Как вы можете видеть ниже, мне удалось написать строку кода с обоих компьютеров, и я вижу два курсора на экране:

Я запускал приложение локально на своем первом компьютере с помощью команды npm start. Вывод приложения, запущенного на localhost: 5000, показан ниже:

Вот где становится по-настоящему захватывающе. Помимо простого совместного написания кода, я также могу поделиться своим локальным сервером с другими участниками сеанса. Я решил поделиться localhost: 5000. Затем на своем втором компьютере я перешел на localhost: 5000 и там тоже увидел приложение! Как соавтор, мне не только не нужно было клонировать репозиторий, мне также не нужно было устанавливать какие-либо зависимости или запускать приложение локально на моем компьютере. Все это сделал первый пользователь!

Помимо совместного использования серверов, вы также можете поделиться терминалами с соавторами. Я использовал терминал со своего первого компьютера, а затем на моем втором компьютере я смог ввести команду npm test в попытке запустить набор тестов проекта (но, увы, тестов для запуска нет).

Во время сеанса совместной работы я добавил в приложение новый раздел под названием «Возможности, которые стоит попробовать». Наша совместная сессия Live Share имела большой успех!

Заключение

Честно говоря, я был очень впечатлен тем, как гладко все прошло с использованием Live Share и всеми дополнительными функциями, которые он предлагал помимо простого совместного редактирования кода. Единственные реальные проблемы возникнут, если VS Code не является вашей предпочитаемой IDE или если у кого-то в сеансе парного программирования возникнут проблемы с подключением к Интернету.

Парное программирование дает много преимуществ: меньше дефектов, более высокая производительность и отличные возможности наставничества. COVID-19, возможно, вынудил нас всех работать удаленно, но это не значит, что мы все еще не можем работать в паре. С такими инструментами, как VS Code Live Share, удаленное парное программирование может быть таким же простым, как парное программирование в офисе.

Каким был ваш опыт удаленного парного программирования? Буду рад услышать от вас в комментариях.