Wprowadzenie
Praca zdalna coraz częściej i „bardziej” wchodzi do naszego zawodu. Sam przez prawie osiem lat pracowałem zdalnie z domu. Teraz natomiast, pracując w olsztyńskim oddziale SoftwareHut, i tak pracuję zdalnie dla klienta z Anglii. Praca zdalna wiąże się z wyzwaniami. W jaki sposób wspólnie debugować aplikacje, gdy jesteśmy oddaleni od siebie o kilkaset kilometrów? Lub programować w parze, aby rozwiązać jakiś problem? Jakiś czas temu Microsoft udostępnił usługę o nazwie VS Live Share, które bardzo ułatwia pracę zdalną. Dodatek ten jest dostępny dla Visual Studio oraz Visual Studio Code. W dzisiejszym wpisie chciałbym Ci przedstawić tę usługę.
Wspólna praca nad kodem
VS Live Share umożliwia wspólną pracę nad projektem bezpośrednio w Visual Studio lub Visual Studio Code. W tym wpisie będę opisywał głównie samo Visual Studio, ale na ogół te same rzeczy są dostępne również w Visual Studio Code. Jedna osoba rozpoczyna zdalną sesję, a następnie udostępnia pozostałym osobom link, za pomocą którego mogą dołączyć do sesji. Oczywiście każdy musi mieć zainstalowany dodatek (https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsls-vs), najlepiej w najnowszej wersji Visual Studio 2017.
Myślę, że najfajniejszą sprawą w działaniu VS Live Share jest to, że ja jako gość nie muszę mieć w ogóle na swoim komputerze kodu projektu osoby, której chcę pomóc. Dodatek na bieżąco pobiera odpowiednie dane z komputera hosta i pokazuje mi pliki. Podczas pracy w sesji (w szczególności na początku) widać drobne opóźnienie w wyświetlaniu plików. Jest to jednak dużo mniej uciążliwe niż konieczność pobrania tej samej wersji kodu, co host (np. przełączenie się na odpowiedni branch).
Poza samodzielnym przeglądaniem kodu, możemy również śledzić inną osobę w sesji. Wtedy w swoim IDE widzimy to, co pokazuje dana osoba: do jakich plików się przełącza, co zaznacza itp. W tym samym czasie możemy samemu zaznaczać jakieś fragmenty kodu, gdy chcemy o coś dopytać – czego już nie zrobimy podczas udostępniania kodu np. za pomocą Skype’a. Sam wielokrotnie klikałem w Skype’ie jakąś linię kodu, aby o nią zapytać. 😉
Przeglądanie kodu to jedno. Możemy również go wspólnie edytować. Widać to najlepiej na poniższym gifie (pochodzi on z strony Microsoftu dotyczącej VS Live Share – https://visualstudio.microsoft.com/pl/services/live-share/).
Z drugiej strony Visual Studio w trybie gościa nie do końca działa tak samo, jak normalnie. Część rzeczy nie jest dostępna, np. niektóre dodatki w ogóle nie działają. Myślę jednak, że z czasem będzie tylko lepiej. Szczególnie że Microsoft stale rozwija VS Live Share.
Debugowanie
VS Live Share umożliwia również zdalne debugowanie aplikacji. Co prawda gość nie może rozpocząć debugowania, ale gdy zrobi to host, wtedy sesja debugowania jest synchronizowana w ramach Live Share.
Jako gość mogę stawiać breakpointy i wykonywać poszczególne linie kodu (działają klawisze F10, F11, Shift + F11). Mogę sprawdzać wartości zmiennych, pól, właściwości. Część okienek działa tak samo, jak podczas normalnego debugowania lokalnie.
Niestety jednak nie wszystko na tę chwilę działa tak samo dla hosta oraz dla gościa. Przykładowo gość nie może przesuwać żółtej strzałki sygnalizującej aktualnie wykonywany kod. Nie działa też część okien, np. Immediate Window (u gościa wyrzuca błędami, które są „od czapy” – ten sam kod u hosta wykonuje się normalnie).
Jest też kilka rzeczy, które mogłyby działać nieco inaczej (oczywiście według mnie ;)). Brakuje mi na przykład możliwości synchronizacji rzeczy wrzuconych do okienka Watch. Gdy chcemy mieć to samo, musimy niezależnie to dodać.
Mimo problemów uważam, że nadal takie wspólne debugowanie jest dużo lepsze niż debugowanie przez Skype’a, w przypadku którego gość nie może zrobić nic poza wydawaniem komend dla hosta. 🙂
Dostęp do zasobów
Kolejną fajną funkcjonalnością proponowaną przez VS Live Share jest możliwość udostępniania lokalnych zasobów. Widać to już podczas zdalnego debugowania. Gdy host rozpocznie debugowanie na przykład aplikacji webowej, wtedy u gościa, poza przejściem Visual Studio w tryb debugowania, w przeglądarce również wyświetla się debugowana aplikacja.
Gość może w normalny sposób z niej korzystać – przechodzić do poszczególnych widoków, wypełniać formularze itp. Gdy w kodzie postawi wcześniej breakpoint, to Visual Studio zatrzyma się podczas wykonywania kodu aplikacji.
Poza udostępnieniem aktualnie debugowanej aplikacji możemy również udostępnić inne porty z komputera hosta. W konfiguracji aktualnej sesji Live Share możemy skorzystać z okna Shared Servers i udostępnić kolejne porty:
Jest to szczególnie przydatne, gdy cała aplikacja składa się z wielu mikroserwisów.
Poza udostępnieniem portów możemy również udostępnić terminal dla gości. Do wyboru mamy dwa sposoby udostępnienia:
- tylko do odczytu – wtedy goście widzą w oknie terminala to, co wpisujemy,
- do odczytu i zapisu – wtedy goście mogą sami wykonywać komendy, które wykonają się na komputerze hosta – oczywiście warto z tym uważać. 😉
W tym momencie brakuje mi jeszcze łatwego udostępnienia bazy danych przez hosta – aby goście mogli niezależnie od niego wykonywać zapytania w celu sprawdzenia, co jest nie tak.
Podsumowanie
VS Live Share jest bardzo fajną usługą, która ułatwia wspólną zdalną pracę nad projektem. Możemy zrobić razem dużo więcej, niż wcześniej było to możliwe tylko poprzez rozmowę na przykład na Skype’ie. Dzięki temu możemy pracować dużo efektywniej.
Osobiście bardzo doceniam używanie VS Live Share (mimo wielu problemów, które są teraz i które z czasem zostaną prawdopodobnie rozwiązane). Użycie Live Share w moim przypadku jest bardzo przydatne, gdy pomagam innym programistom i zespołom w projektach, w których nie biorę udziału (np. w ramach mentoringu). Wtedy w ciągu kilku sekund mam dostęp do kodu projektu, bez konieczności wcześniejszego jego pobrania i konfigurowania środowiska, czy z drugiej strony bez próśb na Skype’ie w stylu: „możesz mi pokazać x, y, z?”.
A jak Ty radzisz sobie w takiej zdalnej pracy? Może korzystasz z innych ciekawych rozwiązań? Proszę, podziel się w komentarzu.
1 thought on “VS Live Share – łatwiejsza praca zdalna”